pyside6 使用qtreewidget 切換QstackedWidget的頁面 ,實例化 ,加注釋
时间: 2024-09-06 20:08:03 浏览: 96
YOLOv9 基于 Pyside6 的图形化界面
在 PySide6 中,`QTreeWidget` 用于显示一个项目层次结构,而 `QStackedWidget` 可以用来展示一系列的页面,每个页面都是一个 QWidget 的子类。要使用 `QTreeWidget` 切换 `QStackedWidget` 的页面,你需要为 `QTreeWidget` 中的每个项目设置一个信号槽机制,当项目被选中时,触发对应的槽函数来切换 `QStackedWidget` 的显示页面。
下面是一个简单的例子,展示了如何使用 `QTreeWidget` 来切换 `QStackedWidget` 的页面,并且附上了一些基本的注释:
```python
import sys
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QTreeWidget, QTreeWidgetItem, QStackedWidget
# 创建一个树形控件项目
class TreeItem(QTreeWidgetItem):
def __init__(self, parent, data, page_index):
super().__init__(parent)
self.setText(0, data)
self.setData(0, 32, page_index) # 设置附加数据,作为对应的页面索引
# 创建一个包含多个页面的堆叠控件页面
class StackedPage(QWidget):
def __init__(self, page_text):
super().__init__()
self.setWindowTitle(page_text)
self.setGeometry(30, 30, 300, 200)
self.setLayout(QVBoxLayout())
label = QLabel(page_text)
self.layout().addWidget(label)
# 应用程序主类
class AppDemo(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("PySide6 QTreeWidget切换QStackedWidget页面示例")
self.setGeometry(100, 100, 600, 400)
# 创建布局
self.layout = QVBoxLayout(self)
# 创建堆叠控件
self.stack = QStackedWidget()
self.layout.addWidget(self.stack)
# 创建页面对象
self.page1 = StackedPage("页面1")
self.page2 = StackedPage("页面2")
self.page3 = StackedPage("页面3")
# 添加页面到堆叠控件
self.stack.addWidget(self.page1)
self.stack.addWidget(self.page2)
self.stack.addWidget(self.page3)
# 创建树形控件
self.tree = QTreeWidget()
self.tree.setHeaderLabel("页面切换")
self.layout.addWidget(self.tree)
# 添加树形控件项目
TreeItem(self.tree.invisibleRootItem(), "页面1", 0)
TreeItem(self.tree.invisibleRootItem(), "页面2", 1)
TreeItem(self.tree.invisibleRootItem(), "页面3", 2)
# 为树形控件的当前项目改变信号连接槽函数
self.tree.currentItemChanged.connect(self.changePage)
# 树形控件项目变化时的槽函数
def changePage(self, current, previous):
if current is None:
return
page_index = current.data(0, 32)
self.stack.setCurrentIndex(page_index)
# 程序入口
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = AppDemo()
demo.show()
sys.exit(app.exec())
```
在这个示例中,我们创建了一个 `AppDemo` 类,它继承自 `QWidget`。在这个类的构造函数中,我们创建了一个堆叠控件 `QStackedWidget`,并在其中添加了三个页面。接着,我们创建了一个树形控件 `QTreeWidget`,并且为它添加了三个项目,每个项目都包含了页面索引作为附加数据。
最后,我们将 `QTreeWidget` 的 `currentItemChanged` 信号连接到了 `changePage` 方法。这个槽函数会根据当前选中的树形控件项目来切换 `QStackedWidget` 的当前页面。
阅读全文