pyside6 treeWidget和stackedWidget聯動 ,實例化一個脚本,並加上注釋
时间: 2024-09-07 09:02:07 浏览: 72
在使用PySide6(Qt for Python)时,`TreeWidget`和`StackedWidget`可以联动以实现树状导航与内容切换的交互方式。下面是一个简单的脚本实例,其中包含注释说明:
```python
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QTreeWidget, QTreeWidgetItem, QStackedWidget, QWidget, QVBoxLayout
class SampleApp(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("TreeWidget 与 StackedWidget 联动示例")
# 创建一个堆叠窗口部件,用于存放不同的页面内容
self.stacked_widget = QStackedWidget()
# 创建树状列表部件,用于显示导航列表
self.tree_widget = QTreeWidget()
self.tree_widget.setColumnCount(1)
self.tree_widget.setHeaderLabel("菜单")
# 添加树状列表项
tree_item1 = QTreeWidgetItem(self.tree_widget)
tree_item1.setText(0, "页面 1")
tree_item2 = QTreeWidgetItem(self.tree_widget)
tree_item2.setText(0, "页面 2")
tree_item3 = QTreeWidgetItem(self.tree_widget)
tree_item3.setText(0, "页面 3")
# 将页面内容添加到堆叠窗口部件中
page1 = QWidget()
page2 = QWidget()
page3 = QWidget()
self.stacked_widget.addWidget(page1)
self.stacked_widget.addWidget(page2)
self.stacked_widget.addWidget(page3)
# 使用垂直布局来组织部件
main_layout = QVBoxLayout()
main_layout.addWidget(self.tree_widget)
main_layout.addWidget(self.stacked_widget)
# 设置中心部件为垂直布局
central_widget = QWidget()
central_widget.setLayout(main_layout)
self.setCentralWidget(central_widget)
# 连接信号和槽,实现联动效果
self.tree_widget.itemClicked.connect(self.on_tree_item_clicked)
def on_tree_item_clicked(self, item, column):
# 根据选中的树状列表项,切换到相应的页面
if item.text(0) == "页面 1":
self.stacked_widget.setCurrentIndex(0)
elif item.text(0) == "页面 2":
self.stacked_widget.setCurrentIndex(1)
elif item.text(0) == "页面 3":
self.stacked_widget.setCurrentIndex(2)
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWin = SampleApp()
mainWin.show()
sys.exit(app.exec())
```
这段脚本中创建了一个`QMainWindow`子类,其中包含一个`QTreeWidget`和一个`QStackedWidget`。`QTreeWidget`用于显示树状菜单,而`QStackedWidget`则用于切换显示不同的页面。当用户点击树状列表中的某一项时,会触发`on_tree_item_clicked`方法,并切换到相应的页面。
阅读全文