
完整code
from PyQt5.QtWidgets import (QApplication, QWidget, QHBoxLayout,
QTreeWidget, QTreeWidgetItem,
QGroupBox)
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtCore import QSize
class Bar_Navigation(QWidget):
def __init__(self):
super(Bar_Navigation, self).__init__()
self.setMinimumHeight(600);
self.setMinimumWidth(800);
##layout_main.setMargin(5)
##layout_main.setSpace(5)
self.creat_main_layout()
self.creat_bar_navigation()
self.creat_left_box()
def get_bar_list(self):
bar_list_item = []
bar_list_1 = ["訂貨管理",
["客戶訂貨", "庫存訂貨", "供貨商訂貨"]
]
bar_list_2 = ["入庫管理",
["采購入庫", "訂貨入庫", "其它入庫"]
]
bar_list_item.append(bar_list_1)
bar_list_item.append(bar_list_2)
return bar_list_item
def creat_main_layout(self):
self.layout_main = QHBoxLayout()
self.setLayout( self.layout_main)
def creat_bar_list(self, data):
for item in data:
item_1 = QTreeWidgetItem( self.tree_Navigation)
##item_1.setText(0,item[0])
## 設置節點的打開/關閉狀態下的不同的圖片
icon = QIcon()
##節點打開狀態
icon.addPixmap(QPixmap("./logo2.png"), QIcon.Normal, QIcon.On)
##節點關閉狀態
icon.addPixmap(QPixmap("./logo1.png"), QIcon.Normal, QIcon.Off)
item_1.setIcon(0, icon)
for item_item in item[1]:
item_1_1 = QTreeWidgetItem( item_1);
item_1_1.setText(0,item_item)
self.tree_Navigation.addTopLevelItem(item_1);
def creat_bar_navigation(self):
self.tree_Navigation = QTreeWidget()
self.tree_Navigation.setHeaderLabel("左側導航欄");
self.tree_Navigation.setColumnCount(1)
self.tree_Navigation.setMaximumWidth(150);
icon_size = QSize(100, 30)
self.tree_Navigation.setIconSize(icon_size)
##如果treewidget就一列,該列的寬度默認等於treewidget的寬度,兩列以上的話才起作用.
##self.tree_Navigation.setColumnWidth(0,100);
data = self.get_bar_list()
self.creat_bar_list(data)
self.layout_main.addWidget(self.tree_Navigation)
## QModelIndex
##self.tree_Navigation.doubleClicked.connect(self.showModelSelected)
## QTreeWidgetItem
self.tree_Navigation.itemDoubleClicked.connect(self.showSelected)
## QModelIndex
def showModelSelected(self, modelIndex):
print( modelIndex.row(), modelIndex.column())
## itemObj:QTreeWidgetItem
def showSelected(self, item, column):
##獲得父節點
parent=item.parent()
## 注:本例的深度只有2,因此只有index_top,index_row兩個變量表示路徑
##根節點上的索引
## 合理值:非負整數
index_top = 0
## 子節點上的索引
##如果為-1則標示是根節點上的項;如果不是-1則標示在子節點上
## 合理值:非負整數
index_row = -1
## 如果是要判斷是否為None,則:
if parent is None:
index_top= self.tree_Navigation.indexOfTopLevelItem(item)
else :
index_top = self.tree_Navigation.indexOfTopLevelItem(parent)
index_row=parent.indexOfChild(item)##獲得節點在父節點中的行號(從0開始)
print(index_top, index_row)
def creat_left_box(self):
self.box_left = QGroupBox('left party')
self.layout_main.addWidget(self.box_left)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
window = Bar_Navigation()
window.show()
sys.exit(app.exec_())