PyQt5高级界面控件之QTreeWidget(五)

QTreeWidget

QTreeWidget类中的常用方法

方法描述
setColumnWidth(int column,int width)将指定列的宽度设置为给定的值
Column:指定的列
width:指定的宽度
insertTopLevelItems()在视图的顶层索引中引入项目的列表
expandAll()展开所有节点的树形节点
invisibleRootItem()返回树形控件中不可见的根选项(Root Item)
selectionItems()返回所有选定的非隐藏项目的列表内

QTreeWidgetItem类中常用的方法

方法描述
addChild()将子项追加到子列表中
setText()设置显示的节点文本
Text()返回显示的节点文本
setCheckState(column.state)设置指定列的选中状态:
Qt.Checked:节点选中
Qt.Unchecked:节点没有选中
setIcon(column,icon)在指定的列中显示图标

实例:树形结构的实现

树形结构是通过QTreeWidget和QTreeWidgetItem类实现的,其中QTreeWidgetItem类实现了节点的添加,其完整代码如下

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon, QBrush, QColor
from PyQt5.QtCore import Qt


class TreeWidgetDemo(QMainWindow):
    def __init__(self, parent=None):
        super(TreeWidgetDemo, self).__init__(parent)
        self.setWindowTitle('TreeWidget 例子')

        self.tree=QTreeWidget()
        #设置列数
        self.tree.setColumnCount(2)
        #设置树形控件头部的标题
        self.tree.setHeaderLabels(['Key','Value'])

        #设置根节点
        root=QTreeWidgetItem(self.tree)
        root.setText(0,'Root')
        root.setIcon(0,QIcon('./images/root.png'))

        # todo 优化2 设置根节点的背景颜色
        brush_red=QBrush(Qt.red)
        root.setBackground(0,brush_red)
        brush_blue=QBrush(Qt.blue)
        root.setBackground(1,brush_blue)

        #设置树形控件的列的宽度
        self.tree.setColumnWidth(0,150)

        #设置子节点1
        child1=QTreeWidgetItem()
        child1.setText(0,'child1')
        child1.setText(1,'ios')
        child1.setIcon(0,QIcon('./images/IOS.png'))

        #todo 优化1 设置节点的状态
        child1.setCheckState(0,Qt.Checked)

        root.addChild(child1)


        #设置子节点2
        child2=QTreeWidgetItem(root)
        child2.setText(0,'child2')
        child2.setText(1,'')
        child2.setIcon(0,QIcon('./images/android.png'))

        #设置子节点3
        child3=QTreeWidgetItem(child2)
        child3.setText(0,'child3')
        child3.setText(1,'android')
        child3.setIcon(0,QIcon('./images/music.png'))



        #加载根节点的所有属性与子控件
        self.tree.addTopLevelItem(root)

        #TODO 优化3 给节点添加响应事件
        self.tree.clicked.connect(self.onClicked)


        #节点全部展开
        self.tree.expandAll()
        self.setCentralWidget(self.tree)

    def onClicked(self,qmodeLindex):
        item=self.tree.currentItem()
        print('Key=%s,value=%s'%(item.text(0),item.text(1)))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    tree = TreeWidgetDemo()
    tree.show()
    sys.exit(app.exec_())

初始运行图如下
这里写图片描述

优化一:设置节点的状态

这里添加了child1的选中状态

 child1.setCheckState(0,Qt.Checked)

这里写图片描述

优化二:设置节点的背景颜色

这里设置了根节点的背景颜色

brush_red=QBrush(Qt.red)
        root.setBackground(0,brush_red)
        brush_blue=QBrush(Qt.blue)
        root.setBackground(1,brush_blue)

这里写图片描述

优化三:给节点添加响应事件

点击,会在控制台输出当前地key值与value值

self.tree.clicked.connect(self.onClicked)
def onClicked(self,qmodeLindex):
        item=self.tree.currentItem()
        print('Key=%s,value=%s'%(item.text(0),item.text(1)))

这里写图片描述

实例:系统定制模式

在上面的例子中,QTreeWidgetItem类的节点是一个个添加上去的,这样有时很不方便,特别是窗口产生比较复杂的树形结构时,一般都是通过QTreeView类来实现的,而不是QTreeWidget类,QTreeView和QTreeWidget类最大的区别就是,QTreeView类可以使用操作系统提供的定制模式,比如文件系统盘的树列表

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

if __name__ == '__main__':
    app=QApplication(sys.argv)

    #window系统提供的模式
    model=QDirModel()
    #创建一个QTreeView的控件
    tree=QTreeView()
    #为控件添加模式
    tree.setModel(model)

    tree.setWindowTitle('QTreeView例子')
    tree.resize(640,480)

    tree.show()
    sys.exit(app.exec_())

这里写图片描述

相关文件及下载地址

https://download.csdn.net/download/jia666666/10609488

  • 19
    点赞
  • 167
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
QTreeWidgetPyQt5中的一个类,用于构建树形结构的控件。每个树节点使用QTreeWidgetItem来表示,是界面编程中的一个重要控件。以下是QTreeWidget的一些常用方法及说明: 1. addTopLevelItem():添加顶级节点 2. insertTopLevelItems():在树的顶层索引中插入节点 3. setColumnCount():设置树结构中的列数 4. setColumnWidth():设置列的宽度 5. QTreeWidgetItem类的常用方法包括setText()、text()、setIcon()、setHeaderLabels()等。 以下是一个创建TreeWidget控件的例子: ```python from PyQt5.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem app = QApplication([]) tree = QTreeWidget() tree.setColumnCount(2) tree.setHeaderLabels(['Name', 'Age']) top_level_item = QTreeWidgetItem(tree) top_level_item.setText(0, 'Tom') top_level_item.setText(1, '25') child_item = QTreeWidgetItem(top_level_item) child_item.setText(0, 'John') child_item.setText(1, '30') tree.show() app.exec_() ``` 以上代码创建了一个包含两列的TreeWidget控件,其中第一列为“Name”,第二列为“Age”。件中包含一个顶级节点“Tom”,以及一个子节点“John”。 关于信号连接自定义槽函数,可以使用connect函数将QTreeWidget的clicked信号连接到自定义的槽函数上。例如: ```python self.treeWidget.clicked.connect(self.gettext) def gettext(self, currentItem): from PyQt5.QtWidgets import QMessageBox QMessageBox.information(MainWindow, "提示", "选中的是"+self.treeWidget.currentItem().text(0)+"该成员职能是"+self.treeWidget.currentItem().text(1), QMessageBox.Ok) ``` 以上代码将QTreeWidget的clicked信号连接到自定义的gettext槽函数上,当鼠标双击TreeWidgetItem时,QTreeWidget会发出双击信号,自定义的Ui_MainWindow类接收后,调用自定义的槽函数。在该槽函数中,使用QMessageBox显示选中的节点的文本信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jia666666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值