对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实现多线程下载文件的代码实例
Jun 01 Python
python映射列表实例分析
Jan 26 Python
在Django的URLconf中进行函数导入的方法
Jul 18 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 Python
python实现数据预处理之填充缺失值的示例
Dec 22 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
Python如何使用函数做字典的值
Nov 30 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
python读取hdfs并返回dataframe教程
Jun 05 Python
详解java调用python的几种用法(看这篇就够了)
Dec 10 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 header 跳转
2013/06/17 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
彻底搞懂JS无缝滚动代码
2007/01/03 Javascript
javascript 写类方式之七
2009/07/05 Javascript
javascript getElementsByClassName实现代码
2010/10/11 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
JavaScript中函数声明与函数表达式的区别详解
2016/08/18 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
python+ffmpeg视频并发直播压力测试
2018/03/06 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
Python实现Keras搭建神经网络训练分类模型教程
2020/06/12 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
HTML5 本地存储 LocalStorage详解
2016/06/24 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
结构工程研究生求职信
2013/10/13 职场文书
会计电算化大学生职业规划书
2014/02/05 职场文书
会计试用期自我评价怎么写
2014/09/18 职场文书
走群众路线剖析材料
2014/10/09 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
《游戏公平》教学反思
2016/02/20 职场文书