PyQt5树形结构控件QTreeWidget操作
生活随笔
收集整理的這篇文章主要介紹了
PyQt5树形结构控件QTreeWidget操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
QTreeWidget 類根據預設的模型提供樹形顯示控件。
QTreeWidget 使用類似于 QListView 類的方式提供一種典型的基于 item 的樹形交互方法類,該類基于QT的“模型/視圖”結構,提供了默認的模型來支撐 item 的顯示,這些 item 類為 QTreeWidgetItem 類。
如果不需要靈活的“模型/視圖”框架,可以使用QTreeWidget 來創建有層級關系的樹形結構。當把標準 item 模型結合 QTreeView 使用時,可以得到更靈活的使用方法,從而把“數據”和“顯示”分離開。
QTreeWidget 信號
測試例子:
""" 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# 設置列數self.myTree.setColumnCount(1)# 設置樹形控件頭部的標題self.myTree.setHeaderLabels(['機構列表'])# 設置根節點self.root = QTreeWidgetItem(self.myTree)self.root.setText(0, '本單位')# 設置樹形控件的列的寬度self.myTree.setColumnWidth(0, 100)# 設置子節點1child1 = QTreeWidgetItem(self.root)child1.setText(0, '市場部')self.root.addChild(child1)# 設置子節點11child11 = QTreeWidgetItem(child1)child11.setText(0, '銷售班')# 設置子節點2child2 = QTreeWidgetItem(self.root)child2.setText(0, '財務部')# 設置子節點21child21 = QTreeWidgetItem(child2)child21.setText(0, '財務一班')# 加載根節點的所有屬性與子控件self.myTree.addTopLevelItem(self.root)# TODO 優化2 給節點添加響應事件self.myTree.clicked.connect(self.onClicked)# 節點全部展開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)# 創建樹控件對象self.myTreeTest = myTreeWidget(self.treeWidget)def center(self):"""定義一個函數使得窗口居中顯示"""# 獲取屏幕坐標系screen = QDesktopWidget().screenGeometry()# 獲取窗口坐標系size = self.geometry()newLeft = (screen.width() - size.width()) / 2newTop = (screen.height() - size.height()) / 2self.move(int(newLeft), int(newTop))def addNode(self):"""添加節點"""print('--- addTreeNode ---')item = self.myTreeTest.myTree.currentItem()node = QTreeWidgetItem(item)node.setText(0, '后勤部')def deleteNode(self):"""刪除節點"""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):"""修改節點"""print('--- modifyTreeNode ---')item = self.myTreeTest.myTree.currentItem()item.setText(0, '辦公室')""" 主函數 """ 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_())效果:
總結
以上是生活随笔為你收集整理的PyQt5树形结构控件QTreeWidget操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Shell编程之通配符和用户自定义变量
- 下一篇: python saml2 认证实例程序d