python图形界面开发之wxPython树控件使用方法详解


Posted in Python onFebruary 24, 2020

wxPython树控件介绍

树(tree)是一种通过层次结构展示信息的控件,如下图所示是树控件示例,左窗口中是树控件,在wxPython中树控件类是wx.TreeCtrl。

python图形界面开发之wxPython树控件使用方法详解

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树控件代码实例

下面用代码实现上图所示的效果:

import wx
 
 
# 自定义窗口类MyFrame
class MyFrame(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)
 
  def on_click(self, event):
    item = event.GetItem()
    self.st.SetLabel(self.tree.GetItemText(item))
 
  def CreateTreeCtrl(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, 'file 1', 1)
    tree.AppendItem(item1, 'file 2', 1)
    tree.AppendItem(item1, 'file 3', 1)
    tree.AppendItem(item1, 'file 4', 1)
    tree.AppendItem(item1, 'file 5', 1)
    tree.Expand(item1)
 
    # 给item2节点添加5个子节点并展开
    tree.AppendItem(item2, 'file 1', 1)
    tree.AppendItem(item2, 'file 2', 1)
    tree.AppendItem(item2, 'file 3', 1)
    tree.AppendItem(item2, 'file 4', 1)
    tree.AppendItem(item2, 'file 5', 1)
    tree.Expand(item2)
 
    # 返回树对象
    return tree
 
 
class App(wx.App):
  def OnInit(self):
    # 创建窗口对象
    frame = MyFrame()
    frame.Show()
    return True
 
  def OnExit(self):
    print("应用程序退出")
    return 0
 
 
if __name__ == '__main__':
  app = App()
  app.MainLoop()

运行结果

上图的运行结果如下:

python图形界面开发之wxPython树控件使用方法详解

更多关于python图形界面开发请查看下面的相关链接

Python 相关文章推荐
python字符串对其居中显示的方法
Jul 11 Python
python3+PyQt5实现文档打印功能
Apr 24 Python
基于数据归一化以及Python实现方式
Jul 11 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
Django中间件基础用法详解
Jul 18 Python
Python实现代码统计工具
Sep 19 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
使用python把xmind转换成excel测试用例的实现代码
Oct 12 Python
python各种excel写入方式的速度对比
Nov 10 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
python des,aes,rsa加解密的实现
Jan 16 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
Feb 20 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 #Python
python绘制动态曲线教程
Feb 24 #Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 #Python
Windows系统下pycharm中的pip换源
Feb 23 #Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 #Python
PyQt5高级界面控件之QTableWidget的具体使用方法
Feb 23 #Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 #Python
You might like
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
PHP 万年历实现代码
2012/10/18 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
php实现用于删除整个目录的递归函数
2015/03/16 PHP
JavaScript this 深入理解
2009/07/30 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
clipboard.js在移动端复制失败的解决方法
2018/06/13 Javascript
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
python 多线程实现检测服务器在线情况
2015/11/25 Python
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
python3.7 sys模块的具体使用
2019/07/22 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
SHEIN台湾:购买最新流行女装服饰
2019/05/18 全球购物
招聘与培训专员岗位职责
2014/01/30 职场文书
个人现实表现材料
2014/02/04 职场文书
文明宿舍获奖感言
2014/02/07 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书