QTreeWidget实现复选框的全选/部分选择/半选择状态

这篇具有很好参考价值的文章主要介绍了QTreeWidget实现复选框的全选/部分选择/半选择状态。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 QTreeWidget实现复选框的全选/部分选择/半选择状态

 


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_())

enjoy文章来源地址https://www.toymoban.com/news/detail-512159.html

到了这里,关于QTreeWidget实现复选框的全选/部分选择/半选择状态的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记录el-select+el-tree复选框,支持模糊查询,懒加载,树父子节点不关联,不全选

    需求:一个机构下拉菜单,一个人员下拉菜单,默认带入当前登录用户的机构和人员。机构下拉菜单为两个接口,模糊查询为一个接口不包含懒加载,默认非模糊查询情况下为一个接口,点击节点懒加载。机构下拉菜单数据变动更新人员下拉菜单数据。日期默认为当天

    2024年01月15日
    浏览(44)
  • uniapp复选框 实现排他选项

    选择了排他选项之后 复选框其他选项不可以选择

    2024年01月24日
    浏览(53)
  • 【微信小程序】实现复选框chebox勾选验证

    功能展示  未选中点击按钮 选中点击按钮 实现逻辑 1. 获取checkbox的value值并绑定事件 2. 将获取到的value值与定义的数据关联 3. 当点击按钮是判断是否勾选,为true则验证通过,false则相反  代码实现 wxml js

    2024年02月07日
    浏览(43)
  • Pygame 基础教程13: 使用 精灵(Sprite) 实现 按钮、开关按钮 和 复选框

    原文链接:https://xiets.blog.csdn.net/article/details/131395471 版权声明:原创文章禁止转载 专栏目录:Pygame 专栏(总目录) Pygame 中并没有按钮、开关按钮、复选框 等基础交互组件,但实际游戏开发中又经常用到。例如用于点击按钮开始游戏的「开始按钮」,用于开启/关闭背景音乐

    2024年02月04日
    浏览(54)
  • vue中获取复选框是否被选中的值、如何用JavaScript判断复选框是否被选中

    一、方法介绍          第一种方法:通过获取dom元素,getElementById、querySelector、getElementsByName、querySelectorAll(需要遍历,例如:for循环)         第二种是用v-model在input复选框上绑定一个变量,通过双向绑定的特性来判断复选框是否被选中。 (推荐使用) 二、演示

    2024年02月03日
    浏览(53)
  • html之input复选框变为圆形、自定义复选框、消除默认样式、去除默认样式、事件代理、事件委托

    input 标签对事件委托不起作用,需要单独在 input 上绑定事件。 w3school outline (轮廓)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。 注释:轮廓线不会占据空间,也不一定是矩形。 outline 简写属性在一个声明中设置所有的轮廓属性。 MDN CSS的 outli

    2024年02月16日
    浏览(64)
  • react antd阻止Checkbox事件冒泡(折叠面板标题中增加复选框,阻止点击复选框折叠面板展开/折叠)

    背景 折叠面板Collapse标题中增加复选框,点击复选框,会触发折叠面板的展开和折叠。 我们希望勾选复选框的时候,不能影响到折叠面板的展开和折叠。 最开始使用 onChange 自带的event来阻止事件冒泡,这种方式是无效的,代码如下: 解决 监听复选框的 onClick 事件,用 e.st

    2024年02月11日
    浏览(57)
  • Layui列表复选框根据条件禁用

    2024年02月12日
    浏览(49)
  • 安卓控件 - 单选按钮和复选框

    安卓应用中,常常需要用户从若干选项中进行选择,有时要求只能选择一个,那么就要使用单选按钮(RadioButton),有时要求用户可以选择多个,那么就要使用复选框(CheckBox) 常用属性 属性 含义 orientation vertical (或 horizontal),决定单选按钮是垂直排列还是水平排列 layo

    2024年02月06日
    浏览(56)
  • Android:设置复选框 CheckBox 的颜色

    Android:设置复选框 CheckBox 的颜色 meta charset=\\\"utf-8\\\" 如何设置复选框在不同状态的颜色? 默认样式 image 预期样式 image meta charset=\\\"utf-8\\\" 先定义Checkbox的style,在values文件下的styles.xml文件中加入: colorControlNormal是未选中的颜色 ,colorControlActivated表示选中时的颜色, 自己在values下的

    2024年02月06日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包