tree_treelist.py

来自「wxPython的基本示例程序」· Python 代码 · 共 105 行

PY
105
字号
import wximport wx.gizmosimport dataclass TestFrame(wx.Frame):    def __init__(self):        wx.Frame.__init__(self, None, title="TreeListCtrl", size=(400,500))        # Create an image list        il = wx.ImageList(16,16)        # Get some standard images from the art provider and add them        # to the image list        self.fldridx = il.Add(            wx.ArtProvider.GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, (16,16)))        self.fldropenidx = il.Add(            wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN,   wx.ART_OTHER, (16,16)))        self.fileidx = il.Add(            wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, (16,16)))                # Create the tree        self.tree = wx.gizmos.TreeListCtrl(self, style =                                           wx.TR_DEFAULT_STYLE                                           | wx.TR_FULL_ROW_HIGHLIGHT)        # Give it the image list        self.tree.AssignImageList(il)        # create some columns        self.tree.AddColumn("Class Name")        self.tree.AddColumn("Description")        self.tree.SetMainColumn(0) # the one with the tree in it...        self.tree.SetColumnWidth(0, 200)        self.tree.SetColumnWidth(1, 200)        # Add a root node and assign it some images        root = self.tree.AddRoot("wx.Object")        self.tree.SetItemText(root, "A description of wx.Object", 1)        self.tree.SetItemImage(root, self.fldridx,                               wx.TreeItemIcon_Normal)        self.tree.SetItemImage(root, self.fldropenidx,                               wx.TreeItemIcon_Expanded)                # Add nodes from our data set        self.AddTreeNodes(root, data.tree)        # Bind some interesting events        self.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.OnItemExpanded, self.tree)        self.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.OnItemCollapsed, self.tree)        self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, self.tree)        self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnActivated, self.tree)        # Expand the first level        self.tree.Expand(root)            def AddTreeNodes(self, parentItem, items):        """        Recursively traverses the data structure, adding tree nodes to        match it.        """        for item in items:            if type(item) == str:                newItem = self.tree.AppendItem(parentItem, item)                self.tree.SetItemText(newItem, "A description of %s" % item, 1)                self.tree.SetItemImage(newItem, self.fileidx,                                       wx.TreeItemIcon_Normal)            else:                newItem = self.tree.AppendItem(parentItem, item[0])                self.tree.SetItemText(newItem, "A description of %s" % item[0], 1)                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 ""            def OnItemExpanded(self, evt):        print "OnItemExpanded: ", self.GetItemText(evt.GetItem())            def OnItemCollapsed(self, evt):        print "OnItemCollapsed:", self.GetItemText(evt.GetItem())    def OnSelChanged(self, evt):        print "OnSelChanged:   ", self.GetItemText(evt.GetItem())    def OnActivated(self, evt):        print "OnActivated:    ", self.GetItemText(evt.GetItem())app = wx.PySimpleApp(redirect=True)frame = TestFrame()frame.Show()app.MainLoop()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?