对PyQt5中树结构的实现方法详解


Posted in Python onJune 17, 2019

树的实质是很多条数据按照一定的内在关系,分层级显示出来。因此每一条数据包括数据项和相互关系。数据项就对应了树中的column,而相互关系对应的是应该显示在哪一个条目下。

PyQt5中,树的实现有两种形式,其中较为简单的是使用Tree Widget控件。

对于静态的数据,实现树结构可以直接在Qt中拖入一个Tree Widget控件,然后右键点击它,选择编辑。

对PyQt5中树结构的实现方法详解

对PyQt5中树结构的实现方法详解

其中column是每一条数据有几个数据项,Item体现的是数据和数据之间是什么关系。

对于我们需要从数据库中查出来的数据,我么需要根据实际的数据进行排列,确定一个树的每一级有多少个条目。

其中有一种可行的实现方法是,受限用SQL对查到的数据按照树从上到下的结构排序,然后用如下代码实现:

a = ['1', '11', '12', '13', '2', '21', '22', '23']
# 你的数据按照
# 【root,child1,child11,child12,child13,child2,child21,child22】
# 这种顺序排列
for i in range(len(a)):
  if len(a[i]) == 1 :
    root = QtWidgets.QTreeWidgetItem(self.treeWidget)
    root.setText(0,a[i])
   elif len(a[i]) == 2 :
    child = QtWidgets.QTreeWidgetItem(root)
    child.setText(0,a[i])

用上述代码得到的就是一个仅仅只有显示功能的树。

一般情况下,我们希望我们点击树的某一个条目,能够有相应的操作。

进入到信号和槽的编辑界面,左键点击Tree Widget,拖动到Form的空白处,出现信号和槽的编辑界面。

对PyQt5中树结构的实现方法详解

左边是Tree Widget的信号的列表,右边是我们自定义的槽,可以点击Edit进行增加和删除。

Tree Widget的信号说明可以参考QT的帮助文档。如下是itemClicked信号的说明:

[signal] void QTreeWidget::itemClicked(QTreeWidgetItem *item, int column)

This signal is emitted when the user clicks inside the widget.

The specified item is the item that was clicked. The column is the item's column that was clicked. If no item was clicked, no signal will be emitted.

经过上述编辑之后,ui文件生成的py文件中,实现信号和槽连接的代码如下:

self.treeWidget.itemClicked['QTreeWidgetItem*','int'].connect(Form.tree_item_click)
# 其中tree_item_click是自己定义的槽函数

槽函数的参数与信号的参数要相同,或者更少。

def tree_item_click(self,item,n):
    print(item.text(n))

item为QTreeWidgetItem类。可以参照QT帮助文档中的QTreeWidgetItem类的说明,实现自定义的功能。

总结:本文提供了一种树结构的实现,树的某个条目被点击之后的响应的实现。更多的是提供了一种PyQt相关资料的查询方法。通过对QT帮助文档的查询,可以指导PyQt的应用。

以上这篇对PyQt5中树结构的实现方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python切片用法实例教程
Sep 08 Python
python实现在sqlite动态创建表的方法
May 08 Python
Python while 循环使用的简单实例
Jun 08 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
Python函数式编程指南:对生成器全面讲解
Nov 19 Python
pytorch下大型数据集(大型图片)的导入方式
Jan 08 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
python梯度下降算法的实现
Feb 24 Python
Python 线程池模块之多线程操作代码
May 20 Python
Python pandas求方差和标准差的方法实例
Aug 04 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 #Python
使用python接入微信聊天机器人
Mar 31 #Python
基于树莓派的语音对话机器人
Jun 17 #Python
PyQt5 QListWidget选择多项并返回的实例
Jun 17 #Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
Jun 17 #Python
使用python进行波形及频谱绘制的方法
Jun 17 #Python
PyQt5图形界面播放音乐的实例
Jun 17 #Python
You might like
PHP中遇到的时区问题解决方法
2015/07/23 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
Vue自定义指令详解
2017/07/28 Javascript
Python的词法分析与语法分析
2013/05/18 Python
Python入门篇之文件
2014/10/20 Python
Python脚本实现代码行数统计代码分享
2015/03/10 Python
通过源码分析Python中的切片赋值
2017/05/08 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
用于业余项目的8个优秀Python库
2018/09/21 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Python日志syslog使用原理详解
2020/02/18 Python
Python如何获取文件指定行的内容
2020/05/27 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
python os模块在系统管理中的应用
2020/06/22 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
德国苹果商店:MacTrade
2020/05/18 全球购物
服务员自我评价
2014/01/25 职场文书
初中班主任评语大全
2014/04/24 职场文书
全国优秀辅导员事迹材料
2014/05/14 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
三年级学生期末评语
2014/12/26 职场文书
后天观后感
2015/06/08 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
基于angular实现树形二级表格
2021/10/16 Javascript