如何用wxpython展示一個如圖所示的的樹呢?
wxpython的treectrl功能可以實現(xiàn)杉武。
1.首先我們可以用wxglade畫前端frame界面,添加一個TreeCtrl ,或者多個TreeCtrl线婚,添加root.每一個tree只能有一個root
self.tree_ctrl_1 = wx.TreeCtrl(self.panel_1, wx.ID_ANY)
my_defect_root =self.my_tree.AddRoot("My Defect")
2.然后給設(shè)置圖片list 用來給根節(jié)點和樹節(jié)點放不一樣的圖片
self.image_list = wx.ImageList(16, 16)
self.case_icon =self.image_list.Add(wx.Image("resource/image/icon/bookmark.png",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap())
self.folder_icon =self.image_list.Add(wx.Image("resource/image/icon/document.png",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.BITMAP_TYPE_PNG).Scale(16, 16).ConvertToBitmap())
3.然后給樹設(shè)置imagelist
self.project_tree.SetImageList(self.image_list)
#注意千萬不能用AssignImageList 狼电,這樣寫雖然運行沒問題蜒灰,但是關(guān)閉窗口時會導(dǎo)致crash,一定要用SetImageList
4.給每一個節(jié)點設(shè)置圖片和文字
status_node =self.my_tree.AppendItem(my_defect_root, “open”)
self.my_tree.SetItemImage(status_node, self.folder_icon, wx.TreeItemIcon_Normal)
5.給節(jié)點綁定雙擊事件
self.my_tree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.show_defect_info)
def show_defect_info(self, event):
????item = event.GetItem()
? ??self.my_tree.Expand(item)
? ??print(self.my_tree.GetItemText(item))