pyqt6QStackedWidget
时间: 2024-06-11 21:02:23 浏览: 99
PyQt6中的QStackedWidget是一个容器小部件,它提供了一个堆栈小部件,用于管理多个子窗口。每个子窗口都被视为一个页面,并且只有一个页面可以在任何时候可见。它可以通过按钮、菜单等控件进行导航。
QStackedWidget主要的功能包括:
1. 支持多个子窗口,每个子窗口对应一个页面;
2. 可以通过setCurrentIndex()方法来设置当前可见的页面;
3. 支持信号和槽机制,可以实现页面之间的通信;
4. 可以通过setCurrentWidget()方法来设置当前可见的小部件。
下面是一个简单的示例代码,演示如何使用QStackedWidget:
```python
import sys
from PyQt6.QtWidgets import QApplication, QStackedWidget, QWidget, QLabel, QVBoxLayout, QPushButton
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.stacked_widget = QStackedWidget()
self.page1 = QWidget()
self.page2 = QWidget()
self.init_ui()
def init_ui(self):
# 页面1
label1 = QLabel("This is Page 1")
button1 = QPushButton("Go to Page 2")
button1.clicked.connect(lambda: self.stacked_widget.setCurrentWidget(self.page2))
layout1 = QVBoxLayout()
layout1.addWidget(label1)
layout1.addWidget(button1)
self.page1.setLayout(layout1)
# 页面2
label2 = QLabel("This is Page 2")
button2 = QPushButton("Go to Page 1")
button2.clicked.connect(lambda: self.stacked_widget.setCurrentWidget(self.page1))
layout2 = QVBoxLayout()
layout2.addWidget(label2)
layout2.addWidget(button2)
self.page2.setLayout(layout2)
# 添加子窗口
self.stacked_widget.addWidget(self.page1)
self.stacked_widget.addWidget(self.page2)
# 设置布局
main_layout = QVBoxLayout()
main_layout.addWidget(self.stacked_widget)
self.setLayout(main_layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec())
```
阅读全文