1 # coding=utf-8 2 3 import sys 4 from PyQt5.QtWidgets import * 5 from PyQt5.QtCore import * 6 from PyQt5.QtGui import * 7 8 9 class Example(QWidget): 10 def __init__(self): 11 super().__init__() 12 self.initUI() 13 14 def initUI(self): 15 hbox = QHBoxLayout(self) 16 left = QFrame(self) 17 # QFrame 控件添加StyledPanel樣式能使QFrame 控件之間的界限更加明顯 18 #left.setFrameShape(QFrame.StyledPanel) 19 right = QFrame(self) 20 #right.setFrameShape(QFrame.StyledPanel) 21 splitter1 = QSplitter(Qt.Horizontal) 22 splitter1.addWidget(left) 23 splitter1.setSizes([20,]) #設置分隔條位置 24 splitter1.addWidget(right) 25 hbox.addWidget(splitter1) 26 self.setLayout(hbox) 27 28 29 # 樹 30 self.tree = QTreeWidget(left) 31 self.tree.setStyleSheet("background-color:#eeeeee;border:outset;color:#215b63;") 32 self.tree.setAutoScroll(True) 33 self.tree.setEditTriggers(QAbstractItemView.DoubleClicked | QAbstractItemView.EditKeyPressed) 34 self.tree.setTextElideMode(Qt.ElideMiddle) 35 #self.tree.setIndentation(30) 36 self.tree.setRootIsDecorated(True) 37 self.tree.setUniformRowHeights(False) 38 self.tree.setItemsExpandable(True) 39 self.tree.setAnimated(False) 40 self.tree.setHeaderHidden(True) 41 self.tree.setExpandsOnDoubleClick(True) 42 self.tree.setObjectName("tree") 43 44 45 # 設置根節點 46 root = QTreeWidgetItem(self.tree) 47 root.setText(0, '系統管理') 48 # 設置樹形控件的列的寬度 49 #self.tree.setColumnWidth(0, 150) 50 # 設置子節點1 51 child1 = QTreeWidgetItem() 52 child1.setText(0, '增加人員信息') 53 root.addChild(child1) 54 # 設置子節點2 55 child2 = QTreeWidgetItem(root) 56 child2.setText(0, '查詢人員信息') 57 # 加載根節點的所有屬性與子控件 58 self.tree.addTopLevelItem(root) 59 # 設置stackedWidget 60 self.stackedWidget = QStackedWidget(right) 61 62 # 設置第一個面板 63 self.form1 = QWidget() 64 self.formLayout1 = QHBoxLayout(self.form1) 65 self.label1 = QLabel() 66 self.label1.setText("增加人員信息面板") 67 self.label1.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)) 68 self.label1.setAlignment(Qt.AlignCenter) 69 self.label1.setFont(QFont("Roman times", 50, QFont.Bold)) 70 self.formLayout1.addWidget(self.label1) 71 72 # 設置第二個面板 73 self.form2 = QWidget() 74 self.formLayout2 = QHBoxLayout(self.form2) 75 self.label2 = QLabel() 76 self.label2.setText("查詢人員信息面板") 77 self.label2.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)) 78 self.label2.setAlignment(Qt.AlignCenter) 79 self.label2.setFont(QFont("Roman times", 50, QFont.Bold)) 80 self.formLayout2.addWidget(self.label2) 81 82 # 將兩個面板,加入stackedWidget 83 self.stackedWidget.addWidget(self.form1) 84 self.stackedWidget.addWidget(self.form2) 85 86 # 樹節點監聽事件 87 self.tree.clicked.connect(self.onClicked) 88 89 90 # 窗口最大化 91 self.showMaximized() 92 self.setWindowTitle('樹窗口分隔案列') 93 self.show() 94 95 def onClicked(self,qmodeLindex): 96 item=self.tree.currentItem() 97 print('Key=%s,value=%s'%(item.text(0),item.text(1))) 98 if item.text(0) == '增加人員信息': 99 self.on_pushButton1_clicked() 100 elif item.text(0) == '查詢人員信息': 101 self.on_pushButton2_clicked() 102 else: 103 print('返回主界面') 104 105 106 # 按鈕一:打開第一個面板 107 def on_pushButton1_clicked(self): 108 self.stackedWidget.setCurrentIndex(0) 109 110 # 按鈕二:打開第二個面板 111 def on_pushButton2_clicked(self): 112 self.stackedWidget.setCurrentIndex(1) 113 114 115 if __name__ == '__main__': 116 app = QApplication(sys.argv) 117 ex = Example() 118 sys.exit(app.exec_())