Adil Hasan
Email: <paradox2005 AT SPAMFREE gmail DOT com>
This is a little extension to the AnotherTutorial TreeCtrl example. I've included a splitter window and broke out the TreeCtrl stuff as an extension to the TreeCtrl class. I'm putting this as a comment in AnotherTutorialTreeCtrlComment and will add a comment to the tutorial page as well.
# treectrlwithsplitter.py
import wx
class MyTree(wx.TreeCtrl):
'''Class of our TreeCtrl
'''
def __init__(self, parent, id, position, size, style):
'''Initialize our tree
'''
wx.TreeCtrl.__init__(self, parent, id, position, size, style)
root = self.AddRoot('Programmer')
os = self.AppendItem(root, 'Operating Systems')
pl = self.AppendItem(root, 'Programming Languages')
tk = self.AppendItem(root, 'Toolkits')
self.AppendItem(os, 'Linux')
self.AppendItem(os, 'FreeBSD')
self.AppendItem(os, 'OpenBSD')
self.AppendItem(os, 'NetBSD')
self.AppendItem(os, 'Solaris')
cl = self.AppendItem(pl, 'Compiled languages')
sl = self.AppendItem(pl, 'Scripting languages')
self.AppendItem(cl, 'Java')
self.AppendItem(cl, 'C++')
self.AppendItem(cl, 'C')
self.AppendItem(cl, 'Pascal')
self.AppendItem(sl, 'Python')
self.AppendItem(sl, 'Ruby')
self.AppendItem(sl, 'Tcl')
self.AppendItem(sl, 'PHP')
self.AppendItem(tk, 'Qt')
self.AppendItem(tk, 'MFC')
self.AppendItem(tk, 'wxPython')
self.AppendItem(tk, 'GTK+')
self.AppendItem(tk, 'Swing')
class MyFrame(wx.Frame):
'''Class of our widget
'''
def __init__(self, parent, id, title):
'''Initialize our widget
'''
wx.Frame.__init__(self, parent, id, title,
wx.DefaultPosition, wx.Size(450, 350))
self.splitter = wx.SplitterWindow(self, -1)
panel1 = wx.Panel(self.splitter, -1)
box1 = wx.BoxSizer(wx.VERTICAL)
self.tree = MyTree(panel1, 1, wx.DefaultPosition, (-1, -1),
wx.TR_HIDE_ROOT|wx.TR_HAS_BUTTONS)
self.tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, id=1)
box1.Add(self.tree, 1, wx.EXPAND)
panel1.SetSizer(box1)
panel2 = wx.Panel(self.splitter, -1)
box2 = wx.BoxSizer(wx.VERTICAL)
self.display = wx.StaticText(panel2, -1, '', (10, 10),
style=wx.ALIGN_CENTRE)
box2.Add(self.display, 1, wx.EXPAND)
panel2.SetSizer(box2)
self.splitter.SplitVertically(panel1, panel2)
self.Centre()
def OnSelChanged(self, event):
'''Method called when selected item is changed
'''
item = event.GetItem()
self.display.SetLabel(self.tree.GetItemText(item))
class MyApp(wx.App):
'''Our application class
'''
def OnInit(self):
'''Initialize by creating the frame
'''
frame = MyFrame(None, -1, 'treectrl.py')
frame.Show(True)
self.SetTopWindow(frame)
return True
if __name__ == '__main__':
app = MyApp(0)
app.MainLoop()