登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
使用PySide6/PyQt6或者WxPython实现对列表界面和树列表 ...
使用PySide6/PyQt6或者WxPython实现对列表界面和树列表界面的整合处理
[ 复制链接 ]
全阳霁
2025-10-1 13:27:00
在之前随笔《使用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
或者
相关帖子
使用Windows Live Writer 2012和Office Word 2013
【Python 基础】第 3 期:使用 PyCharm 编写 Hello World
K230使用RTSP实现无线图传
使用netfilter_queue重定向IP数据包
使用 GeckoCircuits 设计 Buck 电源环路
【入门】使用Node.js开发一个MCP服务器
使用QSPI驱动PM004MNIA
React 中 useCallback 的基本使用和原理解析
[C#] 使用 .NET 的跨平台SIMD硬件加速功能,将 GEMM(通用矩阵乘法)
如何使用问小白生成mp.jobleap4u.com站点简介精致的网页
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
使用Windows Live Writer 2012和Office Word 2013
0
747
裒噎
2025-11-01
安全
【Python 基础】第 3 期:使用 PyCharm 编写 Hello World
0
534
滑清怡
2025-11-01
安全
K230使用RTSP实现无线图传
0
819
刃减胸
2025-11-01
安全
使用netfilter_queue重定向IP数据包
0
268
杭环
2025-11-02
安全
使用 GeckoCircuits 设计 Buck 电源环路
0
194
俏挺喳
2025-11-02
业界
【入门】使用Node.js开发一个MCP服务器
0
855
步雪卉
2025-11-03
安全
使用QSPI驱动PM004MNIA
0
772
琴丁辰
2025-11-04
业界
React 中 useCallback 的基本使用和原理解析
0
539
彭水晶
2025-11-05
安全
[C#] 使用 .NET 的跨平台SIMD硬件加速功能,将 GEMM(通用矩阵乘法)
0
843
陆菊
2025-11-05
安全
如何使用问小白生成mp.jobleap4u.com站点简介精致的网页
0
827
揿纰潦
2025-11-05
回复
(1)
官厌
7 天前
回复
使用道具
举报
照妖镜
感谢分享
vip免费申请,1年只需15美金$
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
程序
安全
科技
签约作者
程序园优秀签约作者
发帖
全阳霁
7 天前
关注
0
粉丝关注
19
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
dage888
999994
3934307807
992122
4
xiangqian
641213
5
刎唇
9993
6
荡俊屯
9948
7
匝抽
9986
8
二艰糖
9970
9
宓碧莹
9988
10
游瞠离
9974
查看更多