PyQt5如何在一个页面打开另一个页面,用类的方式实现
时间: 2024-02-22 16:59:23 浏览: 67
基于PyQt5实现工具栏打开页面及页面传参功能
5星 · 资源好评率100%
要在PyQt5中实现页面间的切换,可以使用QStackedWidget控件。QStackedWidget控件可以将多个页面按照堆栈的形式进行管理,只显示当前活动的页面。
以下是一个简单的示例代码,演示如何使用QStackedWidget控件实现页面切换:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QStackedWidget
class Page1(QWidget):
def __init__(self):
super().__init__()
layout = QVBoxLayout()
self.label = QLabel("This is Page 1")
layout.addWidget(self.label)
button = QPushButton("Go to Page 2")
button.clicked.connect(self.go_to_page2)
layout.addWidget(button)
self.setLayout(layout)
def go_to_page2(self):
# 切换到页面2
stacked_widget.setCurrentIndex(1)
class Page2(QWidget):
def __init__(self):
super().__init__()
layout = QVBoxLayout()
self.label = QLabel("This is Page 2")
layout.addWidget(self.label)
button = QPushButton("Go back to Page 1")
button.clicked.connect(self.go_to_page1)
layout.addWidget(button)
self.setLayout(layout)
def go_to_page1(self):
# 切换到页面1
stacked_widget.setCurrentIndex(0)
# 创建应用程序
app = QApplication(sys.argv)
# 创建QStackedWidget控件
stacked_widget = QStackedWidget()
# 创建两个页面并添加到QStackedWidget中
page1 = Page1()
stacked_widget.addWidget(page1)
page2 = Page2()
stacked_widget.addWidget(page2)
# 默认显示第一个页面
stacked_widget.setCurrentIndex(0)
# 创建主窗口并添加QStackedWidget控件
main_window = QWidget()
layout = QHBoxLayout()
layout.addWidget(stacked_widget)
main_window.setLayout(layout)
# 显示窗口
main_window.show()
sys.exit(app.exec_())
```
在这个示例中,我们定义了两个页面Page1和Page2,分别继承自QWidget。在Page1中,我们添加了一个按钮,点击按钮可以切换到Page2;在Page2中,我们添加了一个按钮,点击按钮可以切换回Page1。然后,我们将这两个页面添加到QStackedWidget中,并将QStackedWidget添加到主窗口中。在主窗口中,我们使用水平布局将QStackedWidget放置在窗口中间。
运行程序,可以看到初始时显示的是Page1,在Page1中点击按钮可以切换到Page2,在Page2中点击按钮又可以切换回Page1。
阅读全文