import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QTreeWidget, QTreeWidgetItem, QLabel, QHBoxLayout class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.resize(500, 300)
self.label = QLabel('No Click') self.tree = QTreeWidget(self) # 实例化树形控件
self.tree.setColumnCount(1) #将该树状控件的列数设为2(默认为1列)
self.tree.setHeaderLabels(['树形控件', '列'])
#设置每列的标题,如果只有一列的话,则应该通过setHeaderLabel(str)方法设置 self.tree.itemClicked.connect(self.change_func)#单击控件时发出信号
#这个信号会自动传递两个参数
#参数1就是被单击的项目对象。<PyQt5.QtWidgets.QTreeWidgetItem object at 0x0000008269BE7EE8>
#参数2就是单击的列序号 self.preview = QTreeWidgetItem(self.tree) # 实例化一个项目。参数:指定父类
self.preview.setText(0, '顶层项目') #给项目设置文本。参数1:列序号
self.preview.setText(1, '顶层项目-1列') self.preview1 = QTreeWidgetItem()
self.preview1.setText(0, '顶层项目1')
self.preview1.setText(1, '顶层项目1-1列')
self.tree.addTopLevelItem(self.preview1) #把self.preview1项目设置为顶层项目 self.qt5112 = QTreeWidgetItem()
self.qt5112.setText(0, 'Qt 5112 snapshot')
self.qt5112.setCheckState(0, Qt.Unchecked) #设置复选框的位置和状态
#参数1 复选框的位置 列序号
#Qt.Unchecked 没选中
#Qt.Checked 选中
#Qt.PartiallyChecked 部分选中 self.preview.addChild(self.qt5112)#给self.preview添加子项目self.qt5112
#给self.qt5112添加父类 choice_list = ['macOS', 'Android x86', 'Android ARMv7', 'Sources', 'iOS']
self.item_list = []
for i, c in enumerate(choice_list):
item = QTreeWidgetItem(self.qt5112)
item.setText(0, c)
item.setCheckState(0, Qt.Unchecked)
self.item_list.append(item) self.test_item = QTreeWidgetItem(self.qt5112)
self.test_item.setText(0, 'test1')
self.test_item.setText(1, 'test2') self.tree.expandAll()
#让所有的项都是以打开状态显示的。注意必须要在所有项都已经实例化好之后再调用该方法,如果一开始就调用则会没有效果 self.h_layout = QHBoxLayout()
self.h_layout.addWidget(self.tree)
self.h_layout.addWidget(self.label)
self.setLayout(self.h_layout) def change_func(self, item, column):
self.label.setText(item.text(column))
#item.text(column) 返回项目指定列的文本 if item == self.qt5112:
if self.qt5112.checkState(0) == Qt.Checked:#判断self.qt5112复选框的状态。参数复选框位置:列序号
#self.qt5112.checkState(0) 返回复选框的状态
[x.setCheckState(0, Qt.Checked) for x in self.item_list]
else:
[x.setCheckState(0, Qt.Unchecked) for x in self.item_list]
else:
check_count = 0
for x in self.item_list:
if x.checkState(0) == Qt.Checked:
check_count += 1 if check_count == 5:
self.qt5112.setCheckState(0, Qt.Checked)
elif 0 < check_count < 5:
self.qt5112.setCheckState(0, Qt.PartiallyChecked) #设置复选框为半选中状态
else:
self.qt5112.setCheckState(0, Qt.Unchecked) if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())

树形控件QTreeWidget的更多相关文章

  1. Qt树形控件QTreeView使用1——节点的添加删除操作 复选框的设置

    QtreeView是ui中最常用的控件,Qt中QTreeWidget比QTreeView更简单,但没有QTreeView那么灵活(QTreeWidget封装的和MFC的CTreeCtrl很类似,没有m ...

  2. qt5--树形控件QTreeWidget

    需要       #include <QTreeWidget>               #include <QTreeWidgetItem> #include " ...

  3. js树形控件—zTree使用总结

    0 zTree简介 树形控件的使用是应用开发过程中必不可少的.zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. 0.0 ...

  4. 关于 DevExpress.XtraTreeList.TreeList 树形控件 的操作

    作为一个C#程序员,在写程序时一直以来都使用的微软那一套控件,用起来特别爽,可是最近公司的一个项目用到了DevExpress框架,不用不知道,一用吓一跳,不得不承认这个框架确实很强大,效果也很炫,但是 ...

  5. 基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串、list集合(MVC5)<二>

    上篇博客给大家介绍了基于Bootstrap的JQuery TreeView树形控件,数据支持json字符串.list集合(MVC5)<一>, 其中的两种方式都显得有些冗余.接着上篇博客继续 ...

  6. js树形控件

    js树形控件 ztree http://www.treejs.cn/

  7. TreeView树形控件递归绑定数据库里的数据

    TreeView树形控件递归绑定数据库里的数据. 第一种:性能不好 第一步:数据库中查出来的表,字段名分别为UNAME(显示名称),DID(关联数据),UTYPE(类型) 第二步:前台代码 <% ...

  8. Devexpress treelist 树形控件 实现带三种状态的CheckBox

    树形控件是使用频率很高的一种控件.对于属性控件往往需要下面两个功能 1.TreeList带有CheckBox,并且节点要有三种状态(所有的子节点都选中,所有的子节点都没选择,一部分子节点选中).使用 ...

  9. SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题

    转:http://blog.csdn.net/miragesky2049/article/details/7204882 SharePoint2010沙盒解决方案基础开发--关于TreeView树形控 ...

随机推荐

  1. mysql学习笔记五 —— MHA

    MySQL_MHA ABB(主从复制)-->MHA(实现mysql高可用.读写分离.脚本控制vip飘逸)-->haproxy(对slave集群实现分发,负载均衡)-->keepali ...

  2. 牛客网练习赛7-D-无向图(bfs,链式前向星)

    题意:中文题: 思路:就是找某个点距离其他点的距离,他给你很多点也无所谓.用一个dist[]数组,这个数组保存的是他给你的点到其他点的最短距离且标记的作用,然后bfs搜索就行了. 代码: #inclu ...

  3. BZOJ1906树上的蚂蚁&BZOJ3700发展城市——RMQ求LCA+树链的交

    题目描述 众所周知,Hzwer学长是一名高富帅,他打算投入巨资发展一些小城市. Hzwer打算在城市中开N个宾馆,由于Hzwer非常壕,所以宾馆必须建在空中,但是这样就必须建立宾馆之间的连接通道.机智 ...

  4. [IOI2018]狼人——kruskal重构树+可持久化线段树

    题目链接: IOI2018werewolf 题目大意:给出一张$n$个点$m$条边的无向图,点和边可重复经过,一个狼人初始为人形,有$q$次询问,每次询问要求人形态只能处于编号不小于$L$的点,狼形态 ...

  5. LOJ #2718. 「NOI2018」归程(Dijkstra + Kruskal重构树 + 倍增)

    题意 给你一个无向图,其中每条边有两个值 \(l, a\) 代表一条边的长度和海拔. 其中有 \(q\) 次询问(强制在线),每次询问给你两个参数 \(v, p\) ,表示在 \(v\) 出发,能开车 ...

  6. 自学Python6.3-内置模块(1)

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

  7. 洛谷 P2463 [SDOI2008]Sandy的卡片 解题报告

    P2463 [SDOI2008]Sandy的卡片 题意 给\(n(\le 1000)\)串,定义两个串相等为"长度相同,且一个串每个数加某个数与另一个串完全相同",求所有串的最长公 ...

  8. 洛谷 P1069 细胞分裂 解题报告

    P1069 细胞分裂 题目描述 \(Hanks\)博士是\(BT\) (\(Bio-Tech\),生物技术) 领域的知名专家.现在,他正在为一个细胞实验做准备工作:培养细胞样本. \(Hanks\) ...

  9. js数组作为参数用ajax向后台传参数

    /*前台往后台传参数时,可以这样写*/ var chessId = "123"; var i=0; var data = []; /*添加单个参数*/ data.push({nam ...

  10. spring MVC 如何接收前台传入的JSON对象数组

    spring MVC 如何接收前台传入的JSON对象数组 主要方法: (主要用到的包是 net.sf.json  即:json-lib-2.3-jdk15.jar 完整相关jar包: commons- ...