PyQt6 QTreeWidget树控件

锋哥原创的PyQt6视频教程:

2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计46条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~、第2讲 PyQt6库和工具库QTDesigner安装与配置、第3讲 PyQt6第一个程序HelloWorld实现等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV11C4y1P7fj/

QTreeWidget树控件,它提供了一个使用预定义树模型的树视图,它的每一个树节点都是一个QTreeWidgetItem。

由于QTreeWidget类继承自QTreeView,因此,它具有QTreeView的所有公共方法,另外,它还提供了一些自身特有的方法。

QTreeWidget类的常用方法:

方法说明
addTopLevelltem()添加顶级节点
insertTopLevelltems()在树的顶层索引中插入节点
invisibleRootItem()获取树控件中不可见的根选项
setColumnCount()设置要显示的列数
setColumnWidth()设置列的宽度
selectedItems()获取选中的树节点

QTreeWidgetItem类的常用方法:

方法说明
addChild()添加子节点
setText()设置节点的文本
setCheckState()设置指定节点的选中状态,取值如下。 Qt.Checked:节点选中; Qt.Unchecked:节点未选中
setIcon()为节点设置图标
text()获取节点的文本

UI生成代码参考:

from PyQt6 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(649, 550)
        self.treeWidget = QtWidgets.QTreeWidget(parent=Form)
        self.treeWidget.setGeometry(QtCore.QRect(140, 110, 381, 321))
        self.treeWidget.setColumnCount(0)
        self.treeWidget.setObjectName("treeWidget")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))

Main测试代码:

"""
    python加载ui文件
    作者 : 小锋老师
    官网 : www.python222.com
"""
import sys

from PyQt6.QtCore import Qt
from PyQt6.QtGui import QIcon
from PyQt6.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem
from PyQt6 import uic

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = uic.loadUi("./QTreeWidget树控件.ui")
    myTreeWidget: QTreeWidget = ui.treeWidget

    myTreeWidget.setHeaderLabels(['分类', '书名', '作者', '价格'])  # 设置列标题

    bookType1 = QTreeWidgetItem(myTreeWidget)  # 创建一级节点
    bookType1.setText(0, "Java类")
    bookType1.setIcon(0, QIcon('type.png'))  # 为节点设置icon图标

    bookType1Child1 = QTreeWidgetItem(bookType1)  # 创建二级节点
    bookType1Child1.setText(0, '')
    bookType1Child1.setText(1, 'Java编程思想')
    bookType1Child1.setText(2, '埃克尔')
    bookType1Child1.setText(3, '109')
    bookType1Child1.setCheckState(1, Qt.CheckState.Unchecked)  # 为节点设置复选框 默认不选中

    bookType1Child2 = QTreeWidgetItem(bookType1)  # 创建二级节点
    bookType1Child2.setText(0, '')
    bookType1Child2.setText(1, 'Java从入门到精通')
    bookType1Child2.setText(2, '码牛逼')
    bookType1Child2.setText(3, '111')
    bookType1Child2.setCheckState(1, Qt.CheckState.Unchecked)  # 为节点设置复选框 默认不选中

    bookType2 = QTreeWidgetItem(myTreeWidget)  # 创建一级节点
    bookType2.setText(0, "Python类")
    bookType2.setIcon(0, QIcon('type.png'))

    bookType2Child1 = QTreeWidgetItem(bookType2)  # 创建二级节点
    bookType2Child1.setText(0, '')
    bookType2Child1.setText(1, 'Python编程思想')
    bookType2Child1.setText(2, '王小')
    bookType2Child1.setText(3, '199')
    bookType2Child1.setCheckState(1, Qt.CheckState.Unchecked)  # 为节点设置复选框 默认不选中

    bookType2Child2 = QTreeWidgetItem(bookType2)  # 创建二级节点
    bookType2Child2.setText(0, '')
    bookType2Child2.setText(1, 'Python从入门到精通')
    bookType2Child2.setText(2, '码牛逼')
    bookType2Child2.setText(3, '101')
    bookType2Child2.setCheckState(1, Qt.CheckState.Unchecked)  # 为节点设置复选框 默认不选中

    bookType3 = QTreeWidgetItem(myTreeWidget)  # 创建一级节点
    bookType3.setText(0, "Go类")
    bookType3.setIcon(0, QIcon('type.png'))

    bookType3Child1 = QTreeWidgetItem(bookType3)  # 创建二级节点
    bookType3Child1.setText(0, '')
    bookType3Child1.setText(1, 'Go编程思想')
    bookType3Child1.setText(2, '王小')
    bookType3Child1.setText(3, '199')
    bookType3Child1.setCheckState(1, Qt.CheckState.Unchecked)  # 为节点设置复选框 默认不选中

    myTreeWidget.setAlternatingRowColors(True)  # 设置斑马线 交替隔行换色 灰白间隔

    myTreeWidget.expandAll()

    ui.show()

    sys.exit(app.exec())

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值