登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
使用PySide6/PyQt6或者WxPython实现对列表界面和树列表 ...
使用PySide6/PyQt6或者WxPython实现对列表界面和树列表界面的整合处理
[ 复制链接 ]
全阳霁
2025-10-1 13:27:00
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
在之前随笔《使用PySide6/PyQt6实现Python跨平台通用列表页面的基类设计》中也介绍过对于基于Python对桌面应用开发的处理,针对常规列表界面的基类做了封装,以便适应比较丰富且弹性化界面的要求,并且减少子类的代码处理,本篇随笔进一步探讨使用PySide6/PyQt6或者WxPython实现对列表界面和树列表界面的整合处理这个主题。
1、使用PySide6/PyQt6实现对列表界面和树列表界面的整合处理
基于重用及减少子类代码的目的,我们抽象了列表界面的基类,我们业务列表界面只需要继承基类,并在构造函数提供相应的信息即可比较弹性化的处理界面多元化的问题。
对于常规的列表界面,一般包括查询条件、列表界面(包括分页信息)等元素,如下界面所示。
实际业务的界面可能如下所示。
使用PySide6/PyQt6 的桌面端开发的时候,我们初始化业务类,并传递相关参数给基类列表界面构造处理即可,如下构造函数处理所示。
而有时候,界面上有时候需要搭配树列表进行快速查询或展示的需要,因此也需要在基类中进行一定的抽象处理,以便子类能进一步减少代码。
那么我们通过参数条件进行指定,如果条件符合,那么构建树列表界面即可。
如用户列表界面中,我们需要展示用户部门、用户角色的分类信息,如下所示。
用户管理界面的列表界面如下所示。
那么我们只需要在子类的构造函数处理上,我们只需要设置参数 use_left_panel = True,并且实现 create_tree_panels 函数即可。
我们在基类中和子类的分工中,基类剥离实际业务具体细节,而在高纬度上进行内容的组合即可。
如在基类窗体中,其中的
_create_content_panel
是基类构建主查询面板内容的逻辑,其中包括输入条件展示、常见按钮显示、以及列表、分页栏目等。
基类负责组合这些元素在一起即可,具体细节下沉到子类进行处理。
如对于用户列表界面的树列表界面,我们只需要在子类FrmUser中重写函数
create_tree_panels
即可,然后在通过构造函数创建两个自定义树列表控件即可,如下所示。
可以看到界面代码比较简洁,关注点只需要集中在创建树列表即可。
那么运行后就会在基类自动组装中,会展示到主列表界面的左侧了。
虽然我们在创建树列表的时候,会创建对应的右键菜单,如下界面所示。
不过有时候为了直观功能的展示,我们可能希望在树列表的顶部增加一些常规的按钮,如新增、刷新等,那么子类如何进阶来实现了。
那么我们可以对树列表控件进行进一步的封装下,增加一个函数来处理下即可,如下所示。
然后在封装的函数中进一步包装下界面后返回给字典集合即可。
整合后界面就可以看到新增的按钮集合了,这样具体细节还是交给子类,父类没有进行干涉,逻辑和细节分离。
2、使用WxPython实现对列表界面和树列表界面的整合处理
对于上面的使用PySide6/PyQt6实现树列表+常规列表的展示处理,在使用WxPython 的桌面端开发的时候,也是类似的处理方式。
业务列表窗体界面一般也是分为两个部分
对于常规的展示列表界面,列表界面一般分为查询区、列表界面展示区和分页信息区,我们把它分为两个主要的部分,如下界面所示。
在开始的用户界面如下所示。
我们在父类窗体中定义一个开关变量,用来开启或者关闭左侧树列表面板的,如下代码所示。
这样构建树列表就交给函数 create_tree_panels 实现即可,它会构建一到多个的树列表,父界面窗体负责整合它们显示即可。
对于业务的客户信息列表界面,生成的代码如下所示(以客户信息表为例):
对于上面用户业务界面来说,也是类似PySide/PyQt的界面代码,因为我们为基类的接口提供了类似的实现。
同样来说,如果我们需要再树列表的顶部增加一些操作按钮显示,那么使用对应的封装函数来返回一个新的面板即可。如下代码所示。
具体的封装函数,我们在WxPython项目类中实现即可,基本上没有太多的差异。
最后在WxPython项目的显示界面效果如下所示。
可以看到,不管是WxPython的界面,还是PySide/PyQt的运行界面,在列表窗体的基类,相同的抽象函数处理逻辑下,都非常的方便,处理的代码也很类似,因此掌握两个不同Python的组件UI的界面开发,在开发框架的友好加持下,会变得非常方便和简便,开发项目起来,会事半功倍,更不用说会有代码生成工具上的支持了。
选择相关的数据表后,一键生成相关的代码,如下所示。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
列表
使用
PySide6
PyQt6
或者
相关帖子
Oracle AI:使用SQL来实现融合检索和整个RAG流程
浏览器 15 个常见指纹特征,使用插件 FingerprintJS 生成浏览器指纹
vxe-gantt 甘特图使用右键菜单
nordic nrf5340使用笔记
PaddlePaddle RapidOcr 使用一则
一步一步学习使用FireMonkey动画(4) 使用Delphi的基本动画组件类
OpenCVSharp:使用CaffeModel
Nuxt.js v4中使用quill富文本组件
Obsidian的Bases数据库入门教程,使用数据库实现Todo待办管理系统
使用typora来写md文件时配置文件存放图片的路径
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
Oracle AI:使用SQL来实现融合检索和整个RAG流程
0
925
缢闸
2025-12-01
业界
浏览器 15 个常见指纹特征,使用插件 FingerprintJS 生成浏览器指纹
1
265
嶝扁
2025-12-01
代码
vxe-gantt 甘特图使用右键菜单
0
731
汤昕昕
2025-12-01
安全
nordic nrf5340使用笔记
0
904
表弊捞
2025-12-02
安全
PaddlePaddle RapidOcr 使用一则
0
586
粉押淫
2025-12-02
业界
一步一步学习使用FireMonkey动画(4) 使用Delphi的基本动画组件类
0
766
崔瑜然
2025-12-03
业界
OpenCVSharp:使用CaffeModel
0
212
渭茱瀑
2025-12-03
业界
Nuxt.js v4中使用quill富文本组件
1
297
汲佩杉
2025-12-04
业界
Obsidian的Bases数据库入门教程,使用数据库实现Todo待办管理系统
0
387
焦尔蕾
2025-12-06
业界
使用typora来写md文件时配置文件存放图片的路径
0
711
董绣梓
2025-12-06
回复
(3)
官厌
2025-10-29 00:53:48
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享
向梦桐
2025-11-9 06:47:46
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
鼓励转贴优秀软件安全工具和文档!
珠尿娜
4 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,学习下。
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
签约作者
程序园优秀签约作者
发帖
全阳霁
4 天前
关注
0
粉丝关注
19
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845355
3934307807
991122
4
xiangqian
638210
5
宋子
9987
6
闰咄阅
9991
7
刎唇
9993
8
俞瑛瑶
9998
9
蓬森莉
9952
10
匝抽
9986
查看更多