python图形界面开发之wxPython树控件使用方法详解
wxPython树控件介绍
树(tree)是一种通过层次结构展示信息的控件,如下图所示是树控件示例,左窗口中是树控件,在wxPython中树控件类是wx.TreeCtrl。
wx.TreeCtrl常用的方法有
- AddRoot(text,image=-1,selImage=-1,data=None)。添加根节点,text参数根节点显示的文本;image参数是该节点未被选中时的图片索引,wx.TreeCtrl中使用的图片被放到wx.ImageList图像列表中;selImage参数是该节点被选中时的图片索引。data参数是给节点传递的数据。方法返回节点,节点类型是wx.TreeItemId。
- AppendItem(parent,text,image=-1,selImage=-1,data=None)。添加子节点,parent参数是父节点,其他参数同AddRoot()方法。方法返回值wx.TreeItemId。
- SelectItem(item,select=True)。选中item节点。
- Expand(item)。展开item节点。
- ExpandAll()。展开根节点下的所有子节点。
- ExpandAllChildren(item)。展开item节点下的所有子节点。
- AssignImageList(imageList)。将wx.ImageList图像列表保存到树中,这样就可以在AddRoot()和AppendItem()方法中使用图像列表索引了。
wxPython树控件代码实例
下面用代码实现上图所示的效果:
importwx #自定义窗口类MyFrame classMyFrame(wx.Frame): def__init__(self): super().__init__(parent=None,title="Tree",size=(500,400)) self.Center() swindow=wx.SplitterWindow(parent=self,id=-1) left=wx.Panel(parent=swindow) right=wx.Panel(parent=swindow) #设置左右布局的分割窗口left和right swindow.SplitVertically(left,right,200) #设置最小窗格大小,左右布局指左边窗口大小 swindow.SetMinimumPaneSize(80) #创建一棵树 self.tree=self.CreateTreeCtrl(left) self.Bind(wx.EVT_TREE_SEL_CHANGING,self.on_click,self.tree) #为left面板设置一个布局管理器 vbox1=wx.BoxSizer(wx.VERTICAL) left.SetSizer(vbox1) vbox1.Add(self.tree,1,flag=wx.EXPAND|wx.ALL,border=5) #为right面板设置一个布局管理器 vbox2=wx.BoxSizer(wx.VERTICAL) right.SetSizer((vbox2)) self.st=wx.StaticText(right,2,label='右侧面板') vbox2.Add(self.st,1,flag=wx.EXPAND|wx.ALL,border=5) defon_click(self,event): item=event.GetItem() self.st.SetLabel(self.tree.GetItemText(item)) defCreateTreeCtrl(self,parent): tree=wx.TreeCtrl(parent) #通过wx.ImageList()创建一个图像列表imglist并保存在树中 imglist=wx.ImageList(16,16,True,2) imglist.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER,size=wx.Size(16,16))) imglist.Add(wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE,size=(16,16))) tree.AssignImageList(imglist) #创建根节点和5个子节点并展开 root=tree.AddRoot('TreeRoot',image=0) item1=tree.AppendItem(root,'Item1',0) item2=tree.AppendItem(root,'Item2',0) item3=tree.AppendItem(root,'Item3',0) item4=tree.AppendItem(root,'Item4',0) item5=tree.AppendItem(root,'Item5',0) tree.Expand(root) tree.SelectItem(root) #给item1节点添加5个子节点并展开 tree.AppendItem(item1,'file1',1) tree.AppendItem(item1,'file2',1) tree.AppendItem(item1,'file3',1) tree.AppendItem(item1,'file4',1) tree.AppendItem(item1,'file5',1) tree.Expand(item1) #给item2节点添加5个子节点并展开 tree.AppendItem(item2,'file1',1) tree.AppendItem(item2,'file2',1) tree.AppendItem(item2,'file3',1) tree.AppendItem(item2,'file4',1) tree.AppendItem(item2,'file5',1) tree.Expand(item2) #返回树对象 returntree classApp(wx.App): defOnInit(self): #创建窗口对象 frame=MyFrame() frame.Show() returnTrue defOnExit(self): print("应用程序退出") return0 if__name__=='__main__': app=App() app.MainLoop()
运行结果
上图的运行结果如下:
更多关于python图形界面开发请查看下面的相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。