wxPython中tree控制元件的簡單使用
樹形控制元件的簡單使用
#!/usr/bin/python
#-*- coding:utf8 -*-import wx
class TreeFrame(wx.Frame):
def __init__(self, root):
values = [ '1',
['2', ['2-1', '2-2', ['2-3', ['2-3-1', '2-3-2']]]],
['3', ['3-1', '3-2']],
['4', ['4-1', '4-2', '4-3']],
'5'
]
wx.Frame.__init__(self, root, -1, u"樹形控制元件", size=(400,400))
self.tree = wx.TreeCtrl(self)
root = self.tree.AddRoot("root")
self.AddTreeNodes(root, values)
self.tree.Expand(root)
self.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.OnItemExpanded, self.tree)
self.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.OnItemCollpased, self.tree)
self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, self.tree)
def AddTreeNodes(self, root, values):
for node in values:
if type(node) == str:
self.tree.AppendItem(root, node)
else:
item = self.tree.AppendItem(root, node[0])
self.AddTreeNodes(item, node[1])
def OnItemExpanded(self,event):
print "OnItemExpanded: "+self.tree.GetItemText(event.GetItem())
def OnItemCollpased(self, event):
print "OnItemCollpased: "+self.tree.GetItemText(event.GetItem())
def OnSelChanged(self, event):
print "OnSelfChenged: "+self.tree.GetItemText(event.GetItem())
class MyApp(wx.App):
def OnInit(self):
self.frame = TreeFrame(None)
self.frame.Show()
return True
app = MyApp()
app.MainLoop()
這是一個帶圖片的控制元件的使用
#!/usr/bin/python
#-*- coding:utf8 -*-
import wx
import wx.gizmos as gizmos
class TreeFrame(wx.Frame):
def __init__(self, root):
wx.Frame.__init__(self, root, -1, u"樹形控制元件使用", size=(400,400))
self.tree = gizmos.TreeListCtrl(self, -1, style=wx.TR_DEFAULT_STYLE | wx.TR_FULL_ROW_HIGHLIGHT)
self.img = wx.ImageList(16,16,True)
self.img.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, (16,16)))
self.img.Add(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN, wx.ART_OTHER, (16,16)))
self.img.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, (16,16)))
self.tree.SetImageList(self.img)
self.tree.AddColumn(u"第一列")
self.tree.AddColumn(u"第二列")
self.tree.AddColumn(u"第三列")
self.tree.SetColumnWidth(0, 200)
self.root = self.tree.AddRoot("root")
self.tree.SetItemText(self.root, "", 1)
self.tree.SetItemText(self.root, "", 2)
for x in range(5):
child = self.tree.AppendItem(self.root, str(x))
self.tree.SetItemText(child, str(x), 0)
self.tree.SetItemText(child, str(x), 1)
self.tree.SetItemText(child, str(x), 2)
self.tree.SetItemImage(child, 0, which = wx.TreeItemIcon_Normal)
self.tree.SetItemImage(child, 1, which = wx.TreeItemIcon_Expanded)
for y in range(5):
last = self.tree.AppendItem(child, str(y))
self.tree.SetItemText(last, str(x) + "-" + str(y), 0)
self.tree.SetItemText(last, str(x) + "-" + str(y), 1)
self.tree.SetItemText(last, str(x) + "-" + str(y), 2)
self.tree.SetItemImage(last, 0, which = wx.TreeItemIcon_Normal)
self.tree.SetItemImage(last, 1, which = wx.TreeItemIcon_Expanded)
self.tree.Expand(self.root)
class MyApp(wx.App):
def OnInit(self):
self.frame = TreeFrame(None)
self.frame.Show()
return True
app = MyApp()
app.MainLoop()