[Tkinter-discuss] Difficulty getting started with a BWidget Tree
gilcneth@earthlink.net
gilcneth at earthlink.net
Thu Sep 15 16:00:37 CEST 2005
That does indeed help! Thank you!
-- Chris
> [Original Message]
> From: Michael Lange <klappnase at web.de>
> To: <tkinter-discuss at python.org>
> Date: 9/15/2005 10:43:27 AM
> Subject: Re: [Tkinter-discuss] Difficulty getting started with a BWidget
Tree
>
> On Wed, 14 Sep 2005 23:46:57 -0400
> "gilcneth at earthlink.net" <gilcneth at earthlink.net> wrote:
>
> > Hello All:
> >
> > I am trying to create a Tree, using PyBWidgets, but am unsure about how
to actually create the initial parent and/or child nodes. The
documentation leads me to believe that I should use the' insert' command,
but how? The documentation indicates the following:
> >
> > pathName insert index parent node ?option value...?
> >
> > So, given my example below, if I want to add a node to my Tree,
wouldn't I use the command TopTree.insert? And, if so, I assume I start at
index '0'? OK, but now who's the parent? I know this has to be simple,
but I am just not figuring this one out. Please share your thoughts.
> >
> Hi Chris,
>
> I wrote a directory Tree widget a while ago, rather a test than a usable
widget, but maybe good
> enough to get started. I had some problems with my release of pybwidget,
because some icons were missing,
> I believe the "plus" and "minus" icons for the Tree, but I don't remember
exactly.
> So, here's the code:
>
> ############ file DirTree.py ##############################
> import Tkinter as tk
> import bwidget as bw
> import os
>
> class DirTree(tk.Frame):
> def __init__(self, master, *args, **kw):
> tk.Frame.__init__(self, master)
> self.tree = tree = bw.Tree(self, opencmd=self.open_folder,
closecmd=self.close_folder, *args, **kw)
> tree.pack(fill='both', expand=1)
>
> self.folder_icon =
tk.PhotoImage(file='/usr/share/pybwidget/images/folder.gif')
> self.openfolder_icon =
tk.PhotoImage(file='/usr/share/pybwidget/images/openfold.gif')
> self.file_icon =
tk.PhotoImage(file='/usr/share/pybwidget/images/file.gif')
>
> node = self.tree.insert('end', 'root', text='/',
image=self.folder_icon, drawcross='allways', data='/')
> self.tree.opentree(node, recurse=0)
>
> def close_folder(self, node):
> self.tree.itemconfigure(node, image=self.folder_icon)
>
> def open_folder(self, node):
> path = self.tree.itemcget(node, 'data')
> children = os.listdir(path)
> files, dirs = [], []
> for item in children:
> if os.path.isdir(os.path.join(path, item)):
> dirs.append(item)
> #else:
> # files.append(item)
> dirs.sort()
> #files.sort()
> for item in dirs:
> newpath = os.path.join(path, item)
> self.tree.insert('end', node, text=item,
image=self.folder_icon, drawcross='allways', data=newpath)
> #for item in files:
> # newpath = os.path.join(path, item)
> # self.tree.insert('end', node, text=item,
image=self.file_icon, drawcross='never', data=newpath)
> self.tree.itemconfigure(node, image=self.openfolder_icon)
>
>
> def test():
> r = tk.Tk()
> t = DirTree(r, bg='white', selectbackground='blue4',
selectforeground='white', deltax=18, deltay=18)
> t.pack(fill='both', expand=1)
> r.mainloop()
>
> if __name__== '__main__':
> test()
> ##############################################################
>
> I hope this helps
>
> Michael
> _______________________________________________
> Tkinter-discuss mailing list
> Tkinter-discuss at python.org
> http://mail.python.org/mailman/listinfo/tkinter-discuss
More information about the Tkinter-discuss
mailing list