你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

[PyQt5]高级控件3 - 树形控件QTreeWidget

2021/11/7 6:54:30

文章目录

  • 效果图
  • 完整代码

效果图

treewidget示例图

完整代码

import sys
from PyQt5.QtWidgets import QTreeWidget,QTreeWidgetItem,QHBoxLayout,QWidget,QApplication,QMainWindow
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt

class QListWidgetDemo(QMainWindow):
    def __init__(self):
        super(QListWidgetDemo, self).__init__()

        self.resize(400, 150)
        #设置窗口标题
        self.setWindowTitle("QListWidgetDemo")

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

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

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

        #设置子节点1
        child1 = QTreeWidgetItem()
        child1.setText(0,'child1')
        child1.setText(1,'ios')
        child1.setIcon(0,QIcon('./u2.ico'))
        root.addChild(child1)

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

        #设置子节点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()

        #创建水平布局
        layout = QHBoxLayout()
        layout.addWidget(self.tree)

        mainFrame = QWidget()
        mainFrame.setLayout(layout)
        self.setCentralWidget(mainFrame)

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

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