PyQt treewiget新增複選框,並獲取是否選中
阿新 • • 發佈:2018-12-17
# -*- coding: utf-8 -*- import sys from PyQt4.QtGui import * from PyQt4.QtCore import * class TreeWidget(QWidget): def __init__(self): super(TreeWidget, self).__init__() self.setWindowTitle('TreeWidget') self.tree = QTreeWidget() # 例項化一個TreeWidget物件 self.tree.setColumnCount(2) # 設定部件的列數為2 self.tree.setDropIndicatorShown(True) self.tree.setSelectionMode(QAbstractItemView.ExtendedSelection)#設定item可以多選 self.tree.setHeaderLabels(['Key', 'Value']) # 設定頭部資訊對應列的識別符號 # 設定root為self.tree的子樹,故root是根節點 root = QTreeWidgetItem(self.tree) root.setText(0, 'root') # 設定根節點的名稱 # 為root節點設定子結點 child1 = QTreeWidgetItem(root) child1.setText(0, 'child1') child1.setText(1, 'name1') child1.setCheckState(0, Qt.Unchecked); child2 = QTreeWidgetItem(root) child2.setText(0, 'child2') child2.setText(1, 'name2') child2.setCheckState(0, Qt.Unchecked); child3 = QTreeWidgetItem(root) child3.setText(0, 'child3') child3.setCheckState(0, Qt.Unchecked); child4 = QTreeWidgetItem(child3) child4.setText(0, 'child4') child4.setText(1, 'name4') child4.setCheckState(0, Qt.Unchecked); button=QPushButton("test") lay=QVBoxLayout() lay.addWidget(button) lay.addWidget(self.tree) button.clicked.connect(self.getText) self.tree.itemChanged.connect(self.handleChanged) self.tree.addTopLevelItem(root) self.setLayout(lay) # 將tree部件設定為該視窗的核心框架 def handleChanged(self, item, column): #當check狀態改變時得到他的狀態。 if item.checkState(column) == Qt.Checked: print "checked", item, item.text(column) if item.checkState(column) == Qt.Unchecked: print "unchecked", item, item.text(column) def getText(self): #print self.tree #獲取選擇的某項 #print self.tree.currentItem().text(1) ; #當item多選時獲取選擇的某幾項,text(0),代表第0列,text(1),代表第1列 Item_list= self.tree.selectedItems () for ii in Item_list: print ii.text(1) app = QApplication(sys.argv) app.aboutToQuit.connect(app.deleteLater) tp = TreeWidget() tp.show() app.exec_()