wxpython TreeCtrl with os.listdir

kyosohma at gmail.com kyosohma at gmail.com
Fri Aug 3 09:07:13 EDT 2007


On Aug 3, 6:56 am, vedrandeko... at v-programs.com wrote:
> Hello,
>
> Does anybody know how can I "insert" os.listdir items in wx python
> TreeCtrl and every item assign adequately
> icon on this example
> import wx
>
> class TestFrame(wx.Frame):
>     def __init__(self):
>         wx.Frame.__init__(self, None, title="simple tree with icons",
> size=(400,500))
>
>         il = wx.ImageList(16,16)
>
>         # adequately icons
>         self.fldridx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER,
> wx.ART_OTHER, (16,16))) # icon for os.listdir folder
>         self.fldropenidx =
> il.Add(wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN,wx.ART_OTHER,
> (16,16)))
> # icon for os.listdir file
>         self.fileidx =
> il.Add(wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER,
> (16,16)))
> # icon for os.listdir open folder
>
>         self.tree = wx.TreeCtrl(self)
>
>         self.tree.AssignImageList(il)
>         root = self.tree.AddRoot("wx.Object")
>         self.tree.SetItemImage(root,
> self.fldridx,wx.TreeItemIcon_Normal)
>         self.tree.SetItemImage(root,
> self.fldropenidx,wx.TreeItemIcon_Expanded)
>
>         self.AddTreeNodes(root, data.tree)  # There must be os.listdir
> items
>         self.tree.Expand(root)
>
>     def AddTreeNodes(self, parentItem, items):
>         for item in items:
>             if type(item) == str:
>                 newItem = self.tree.AppendItem(parentItem, item)
>                 self.tree.SetItemImage(newItem,
> self.fileidx,wx.TreeItemIcon_Normal)
>             else:
>                 newItem = self.tree.AppendItem(parentItem, item[0])
>                 self.tree.SetItemImage(newItem,
> self.fldridx,wx.TreeItemIcon_Normal)
>                 self.tree.SetItemImage(newItem,
> self.fldropenidx,wx.TreeItemIcon_Expanded)
>
>                 self.AddTreeNodes(newItem, item[1])
>
>     def GetItemText(self, item):
>         if item:
>             return self.tree.GetItemText(item)
>         else:
>             return ""
>
> app = wx.PySimpleApp(redirect=True)
> frame = TestFrame()
> frame.Show()
> app.MainLoop()
>
> Regards,
> Vedran

This looks like something to post to the wxPython user's group, found
here: http://www.wxpython.org/maillist.php

The treectrl is one of the more complicated widgets of the wxPython
set.

Mike




More information about the Python-list mailing list