當(dāng)前位置:
首頁 >
PyQt5树形结构控件QTreeWidget操作
發(fā)布時(shí)間:2025/3/11
43
豆豆
生活随笔
收集整理的這篇文章主要介紹了
PyQt5树形结构控件QTreeWidget操作
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
QTreeWidget 類根據(jù)預(yù)設(shè)的模型提供樹形顯示控件。
QTreeWidget 使用類似于 QListView 類的方式提供一種典型的基于 item 的樹形交互方法類,該類基于QT的“模型/視圖”結(jié)構(gòu),提供了默認(rèn)的模型來支撐 item 的顯示,這些 item 類為 QTreeWidgetItem 類。
如果不需要靈活的“模型/視圖”框架,可以使用QTreeWidget 來創(chuàng)建有層級(jí)關(guān)系的樹形結(jié)構(gòu)。當(dāng)把標(biāo)準(zhǔn) item 模型結(jié)合 QTreeView 使用時(shí),可以得到更靈活的使用方法,從而把“數(shù)據(jù)”和“顯示”分離開。
QTreeWidget 信號(hào)
測(cè)試?yán)?#xff1a;
""" python主文件 """ # -*- coding: utf-8 -*- from PyQt5 import QtCore from PyQt5.QtWidgets import QDesktopWidget import sys from PyQt5.QtWidgets import *import tree # tree.py文件class myTreeWidget:def __init__(self, objTree):self.myTree = objTree# 設(shè)置列數(shù)self.myTree.setColumnCount(1)# 設(shè)置樹形控件頭部的標(biāo)題self.myTree.setHeaderLabels(['機(jī)構(gòu)列表'])# 設(shè)置根節(jié)點(diǎn)self.root = QTreeWidgetItem(self.myTree)self.root.setText(0, '本單位')# 設(shè)置樹形控件的列的寬度self.myTree.setColumnWidth(0, 100)# 設(shè)置子節(jié)點(diǎn)1child1 = QTreeWidgetItem(self.root)child1.setText(0, '市場(chǎng)部')self.root.addChild(child1)# 設(shè)置子節(jié)點(diǎn)11child11 = QTreeWidgetItem(child1)child11.setText(0, '銷售班')# 設(shè)置子節(jié)點(diǎn)2child2 = QTreeWidgetItem(self.root)child2.setText(0, '財(cái)務(wù)部')# 設(shè)置子節(jié)點(diǎn)21child21 = QTreeWidgetItem(child2)child21.setText(0, '財(cái)務(wù)一班')# 加載根節(jié)點(diǎn)的所有屬性與子控件self.myTree.addTopLevelItem(self.root)# TODO 優(yōu)化2 給節(jié)點(diǎn)添加響應(yīng)事件self.myTree.clicked.connect(self.onClicked)# 節(jié)點(diǎn)全部展開self.myTree.expandAll()def onClicked(self):item = self.myTree.currentItem()print('Key=%s' % (item.text(0)))class MyPyQTMainForm(QMainWindow, tree.Ui_MainWindow):"""主界面"""def __init__(self):"""初始化"""super(MyPyQTMainForm, self).__init__()self.setupUi(self)# 創(chuàng)建樹控件對(duì)象self.myTreeTest = myTreeWidget(self.treeWidget)def center(self):"""定義一個(gè)函數(shù)使得窗口居中顯示"""# 獲取屏幕坐標(biāo)系screen = QDesktopWidget().screenGeometry()# 獲取窗口坐標(biāo)系size = self.geometry()newLeft = (screen.width() - size.width()) / 2newTop = (screen.height() - size.height()) / 2self.move(int(newLeft), int(newTop))def addNode(self):"""添加節(jié)點(diǎn)"""print('--- addTreeNode ---')item = self.myTreeTest.myTree.currentItem()node = QTreeWidgetItem(item)node.setText(0, '后勤部')def deleteNode(self):"""刪除節(jié)點(diǎn)"""print('--- delTreeNode ---')item = self.myTreeTest.myTree.currentItem()root = self.myTreeTest.myTree.invisibleRootItem()for item in self.myTreeTest.myTree.selectedItems():(item.parent() or root).removeChild(item)def modifyNode(self):"""修改節(jié)點(diǎn)"""print('--- modifyTreeNode ---')item = self.myTreeTest.myTree.currentItem()item.setText(0, '辦公室')""" 主函數(shù) """ if __name__ == '__main__':app = QApplication(sys.argv)myPyMainForm = MyPyQTMainForm()# 主窗口顯示在屏幕中間myPyMainForm.center()# 禁止最大化按鈕myPyMainForm.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint | QtCore.Qt.WindowCloseButtonHint)# 禁止拉伸窗口大小myPyMainForm.setFixedSize(myPyMainForm.width(), myPyMainForm.height())# 顯示主界面myPyMainForm.show()sys.exit(app.exec_())效果:
總結(jié)
以上是生活随笔為你收集整理的PyQt5树形结构控件QTreeWidget操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Shell编程之通配符和用户自定义变量
- 下一篇: PyCharm运行出现 Ignoring