可以通过以下步骤实现:
创建一个 QTreeWidget 和 QStackedWidget 对象。
将 QStackedWidget 添加到主窗口中。
为 QTreeWidget 添加节点,每个节点对应一个页面。
为 QTreeWidget 的 itemClicked 信号连接一个槽函数。
在槽函数中获取当前选中的节点,在 QStackedWidget 中显示对应的页面。
下面是示例代码:
from PyQt5.QtWidgets import QApplication, QMainWindow, QTreeWidget, QTreeWidgetItem, QStackedWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建 QTreeWidget 和 QStackedWidget
self.tree_widget = QTreeWidget(self)
self.stacked_widget = QStackedWidget(self)
# 添加 QStackedWidget 到主窗口中
self.setCentralWidget(self.stacked_widget)
# 添加节点到 QTreeWidget
node1 = QTreeWidgetItem(["Page 1"])
node2 = QTreeWidgetItem(["Page 2"])
node3 = QTreeWidgetItem(["Page 3"])
self.tree_widget.addTopLevelItem(node1)
self.tree_widget.addTopLevelItem(node2)
self.tree_widget.addTopLevelItem(node3)
# 添加页面到 QStackedWidget
page1 = QWidget()
page2 = QWidget()
page3 = QWidget()
self.stacked_widget.addWidget(page1)
self.stacked_widget.addWidget(page2)
self.stacked_widget.addWidget(page3)
# 连接 QTreeWidget 的 itemClicked 信号
self.tree_widget.itemClicked.connect(self.change_page)
# 设置初始页面为第一页
self.stacked_widget.setCurrentIndex(0)
def change_page(self, item):
# 获取当前选中的节点
index = self.tree_widget.indexOfTopLevelItem(item)
# 在 QStackedWidget 中显示对应的页面
self.stacked_widget.setCurrentIndex(index)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()