利用python与pyqt5实现同窗口多层界面设计
时间: 2023-09-25 20:16:11 浏览: 162
PyQt5是一个Python的GUI工具包,可以用来创建桌面应用程序。在PyQt5中,使用QStackedWidget类可以实现同窗口多层界面设计。
QStackedWidget是一个容器控件,它可以容纳一堆子widget,每个widget可以看作是一个页面。当需要切换页面时,只需要调整QStackedWidget中当前显示的widget即可。
以下是一个简单的示例代码,演示如何使用QStackedWidget实现同窗口多层界面设计:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QStackedWidget
class MainWindow(QWidget):
def __init__(self):
super().__init__()
# 创建两个页面
self.page1 = QWidget()
self.page2 = QWidget()
# 在第一个页面中添加一个标签和一个按钮
label1 = QLabel("这是第一页")
button1 = QPushButton("切换到第二页")
button1.clicked.connect(self.switchToPage2)
layout1 = QVBoxLayout(self.page1)
layout1.addWidget(label1)
layout1.addWidget(button1)
# 在第二个页面中添加一个标签和一个按钮
label2 = QLabel("这是第二页")
button2 = QPushButton("切换到第一页")
button2.clicked.connect(self.switchToPage1)
layout2 = QVBoxLayout(self.page2)
layout2.addWidget(label2)
layout2.addWidget(button2)
# 创建一个QStackedWidget,把两个页面添加到其中
self.stackedWidget = QStackedWidget(self)
self.stackedWidget.addWidget(self.page1)
self.stackedWidget.addWidget(self.page2)
# 创建一个水平布局,把QStackedWidget添加进去
layout = QHBoxLayout(self)
layout.addWidget(self.stackedWidget)
def switchToPage1(self):
# 切换到第一页
self.stackedWidget.setCurrentWidget(self.page1)
def switchToPage2(self):
# 切换到第二页
self.stackedWidget.setCurrentWidget(self.page2)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个示例代码中,我们创建了一个包含两个页面的窗口应用程序。每个页面都包含一个标签和一个按钮。当点击按钮时,通过QStackedWidget的setCurrentWidget方法切换到另一个页面。
运行这个程序,你会看到一个窗口,上面有一个标签和一个按钮。点击按钮,就可以切换到另一个页面。
阅读全文