1. 功能概述

这里简单介绍下,通过分割窗垂直分割出两块区域,并绑定两个面板,左面板绑定3个树形控件,初始隐藏。然后添加菜单,绑定事件,通过点击菜单来切换树形控件的显示

2. 效果图

                

3. 下面是代码

import wx
import wx.lib.agw.customtreectrl as CTclass MyFrame(wx.Frame):def __init__(self, parent, id, title, pos, size):# 初始化父类super().__init__(parent, id, title, pos, size)# 添加菜单栏及菜单self.menuBar = wx.MenuBar()self.file1 = wx.Menu()self.file2 = wx.Menu()# 添加菜单到菜单栏self.menuBar.Append(self.file1, "File")self.menuBar.Append(self.file2, "关于")# (id, 菜单项名称, 状态栏说明)  id=-1表示取一个新的idself.menu1 = self.file1.Append(-1, "树1", "树1...")self.menu2 = self.file1.Append(-1, "树2", "树2...")self.menu3 = self.file1.Append(-1, "树3", "树3...")# 显示菜单栏self.SetMenuBar(self.menuBar)# 显示状态栏(位置在框架最下方)self.status_bar = self.CreateStatusBar()# 创建分割窗,定义左右两个面板self.splitter = wx.SplitterWindow(self, -1)self.left_panel = wx.Panel(self.splitter)self.right_panel = wx.Panel(self.splitter)self.splitter.SplitVertically(self.left_panel, self.right_panel, 240)# 定义右面板白色背景色self.right_panel.SetBackgroundColour("white")# 创建3个树形控件self.tree1 = self.create_tree("tree_1", 7)self.tree2 = self.create_tree("tree_2", 5)self.tree3 = self.create_tree("tree_3", 12)# 将3个树形控件都放在左面板上,并用BoxSizer管理self.panel(self.tree1)self.panel(self.tree2)self.panel(self.tree3)# 初始隐藏3个树形控件#self.tree1.Hide()self.tree2.Hide()self.tree3.Hide()# 为三个菜单项绑定事件self.Bind(wx.EVT_MENU, self.OnMenu1, self.menu1)self.Bind(wx.EVT_MENU, self.OnMenu2, self.menu2)self.Bind(wx.EVT_MENU, self.OnMenu3, self.menu3)# 菜单触发的动作def OnMenu1(self, event):self.tree2.Hide()self.tree3.Hide()self.tree1.Show()def OnMenu2(self, event):self.tree1.Hide()self.tree3.Hide()self.tree2.Show()def OnMenu3(self, event):self.tree1.Hide()self.tree2.Hide()self.tree3.Show()def create_tree(self, name, num):custom_tree = CT.CustomTreeCtrl(parent=self.left_panel, pos=(0, 0), size=(240, 400),agwStyle=wx.TR_DEFAULT_STYLE)# 树形控件根(ct_type=1显示复选框)root = custom_tree.AddRoot(name, ct_type=1)custom_tree.CheckItem(root)# 定义图标il = wx.ImageList(16, 16)fldridx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, (16, 16)))fileidx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, (16, 16)))custom_tree.SetImageList(il)# 给根项添加图标custom_tree.SetItemImage(root, fldridx, wx.TreeItemIcon_Normal)# 创建子项for i in range(0, num):mid_name = "item_" + str(i)item = custom_tree.AppendItem(root, mid_name, ct_type=1)custom_tree.SetItemImage(item, fldridx, wx.TreeItemIcon_Normal)for j in range(0, 3):sub_name = "sub_file_" + str(j)sub_item = custom_tree.AppendItem(item, sub_name, ct_type=1)custom_tree.SetItemImage(sub_item, fileidx, wx.TreeItemIcon_Normal)# 展开根项custom_tree.Expand(root)return custom_treedef panel(self, control):vbox_left = wx.BoxSizer(wx.VERTICAL)self.left_panel.SetSizer(vbox_left)vbox_left.Add(control, 1, flag=wx.EXPAND | wx.ALL, border=5)if __name__ == '__main__':app = wx.App()frame = MyFrame(parent=None, id=-1, title="test", pos=(600, 200), size=(600, 480))frame.Show()app.MainLoop()

4.  扩展

在右边板上可以添加,一些按钮,文本框来丰富小工具的功能;还有树形控件的响应事件,通过选中不同复选框来进行不同动作或输出等,这里就不再多述

python3:wxpython分割窗、通过菜单项切换左面板树形控件相关推荐

  1. 解决了界面上菜单项跑到其它AE控件后面的问题(java)

    菜单项竟然跑到后面去了,搞了好多天,终于解决了 只要把这句代码放到main()的最前面就可以了 JPopupMenu.setDefaultLightWeightPopupEnabled(false); ...

  2. WPF 把图片分割成两份自动翻页 WpfFlipPageControl:CtrlBook 书控件

    原文:WPF 把图片分割成两份自动翻页 WpfFlipPageControl:CtrlBook 书控件 版权声明:本文为博主原创文章,需要转载尽管转载. https://blog.csdn.net/z ...

  3. qt中树形控件QTreeWidget的项点击后获取该项的文本

    概述 通过点击树形控件的项,可以得到被点击的树形控件的文本,使用树形控件的信号itemPressed与所在类的槽函数绑定,通过传递参数QTreeWidgetItem和列column,在绑定的槽函数中得 ...

  4. elementui树状菜单tree_Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)...

    这篇博客主要介绍树形控件的两个小小的功能: 下拉菜单 输入过滤框 以CSS样式为主,也会涉及到Vue组件和element组件的使用. 对于没有层级的数据,我们可以使用表格或卡片来展示.要展示或建立层级 ...

  5. html 自动加载activex控件,管理加载项未显示加载控件

    已安装控件,但是在"管理加载项"中"所有加载项"中就是这个: 已安装的控件只有在网页调用此控件时才会在加载项里出现 IE加载项没有禁用Flash Player为 ...

  6. 源码推荐:仿写映客直播 ,快速切换主题 ,星星评分控件,表格样式,可以横向移动的表格, 仿微信键盘-

    仿写映客直播(上传者:五仁月饼) 工作之余写的,基于IJKPlayer播放,对内存做了处理.目前已完成直播列表和直播间的搭建,后续还会慢慢完善. 项目地址 publishImageAndVideoAn ...

  7. 【Android开发】自定义ListView,使用通用适配器,并实现ListView上的每一项和每一项上的按钮等控件同时监听

    ListView在Android开发中是比较常用的系统组件,但是有时候我们除了需要做ListView上每一行的点击监听事件之外,如果每一行上还有其他需要监听的控件例如Button.CheckBox等, ...

  8. 菜单向上拉html,模拟select控件,CSS上拉菜单

    模拟select控件,CSS下拉菜单 模拟select控件 html,body{height:100%;overflow:hidden;} body,div,form,h2,ul,li{margin: ...

  9. openlayer右键菜单_让OpenLayers的SelectFeature控件支持鼠标右键事件

    OpenLayers上的一个Feature对象单击出现一个气泡很容易实现,但是右键出现点菜单什么的就不容易了,关键在于SelectFeature控件不支持右键事件,所以我就改之.. 修改的源文件是基于 ...

最新文章

  1. Visual Studio 中指定自定义生成事件
  2. html:(14):给div命名和table标签
  3. dede 验证码不显示 vdimgck.php,织梦(dedecms)后台登录验证码不显示或不正常的解决方法...
  4. python在财务中的应用-利用python实现周期财务统计可视化
  5. c++ 23种设计模式_如何用一句话总结23种设计模式
  6. java如何实现游戏暂停和恢复_Android:游戏循环暂停/恢复问题
  7. c语言图书管理系统课设报告总结,c语言图书管理系统课设报告.docx
  8. 用kindle看微信公众号文章的一种方法
  9. 身体健康是第一生产力 --- 我看央视主持人李咏早逝
  10. 学习s3c2440的随笔笔记
  11. html判断闰年,javascript怎么判断是否闰年?
  12. Android攻城狮数据存储之SharedPreferences
  13. springboot中 @Imput与@EnableConfigurationProperties区别
  14. 基于BootStrap实现商城首页
  15. YUV420(I420)与YV12的区别,YUV420p与YUV420区别
  16. 2023年2022年Cfa一级考纲变化分析
  17. 如何按照DocNum+LineNum+流水号生成批次号
  18. Redis 安装部署教程
  19. python用字符串输出月份_python 输出上个月的月末日期实例
  20. 【UE4】刷草后构建光照巨慢,还提示光照贴图分辨率过大的解决办法

热门文章

  1. ChatGPT泄露用户聊天记录标题;Adobe加入AIGC战局;阿里大模型前带头人杨红霞加盟字节跳动丨每日大事件...
  2. 爱奇艺这一招到底是看不起谁?是看不起安卓,还是看不起苹果?
  3. 21天转型容器实战营(一了解容器的基本知识)
  4. 【每天学习一点新知识】nmap端口扫描
  5. MySQL数据库-子查询-表联接(内/外)-综合练习
  6. 21根火柴游戏【C语言实现】
  7. 运维面试必问的自动化系列高频面试题(2021年最新版)
  8. 爱情:两个人的一辈子
  9. Python解一元一次方程
  10. 公众号服务器的配置信息,公众号服务器配置信息怎么设置