pyqt5页面已完成布局,想实现点击一个按钮弹出一个新的页面
时间: 2023-06-16 19:05:39 浏览: 115
可以使用QStackedWidget来实现这个功能。QStackedWidget是一个堆叠窗口部件,可以在其中添加多个QWidget,并且只有一个QWidget可以在顶部显示。
具体实现步骤如下:
1. 创建一个QStackedWidget对象,并将其添加到主窗口中。
```python
self.stacked_widget = QStackedWidget(self)
self.setCentralWidget(self.stacked_widget)
```
2. 创建一个QWidget对象作为新页面,并将其添加到QStackedWidget中。
```python
new_page = QWidget(self)
self.stacked_widget.addWidget(new_page)
```
3. 创建一个按钮,并为其添加一个clicked信号的槽函数。在槽函数中,切换到新页面。
```python
def on_button_clicked(self):
self.stacked_widget.setCurrentIndex(1)
```
完整的代码示例:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QLabel, QPushButton, QStackedWidget
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建堆叠窗口部件
self.stacked_widget = QStackedWidget(self)
self.setCentralWidget(self.stacked_widget)
# 创建第一页
page1 = QWidget(self)
label1 = QLabel('This is page 1!', page1)
button1 = QPushButton('Go to page 2', page1)
button1.clicked.connect(self.on_button_clicked)
layout1 = QVBoxLayout()
layout1.addWidget(label1)
layout1.addWidget(button1)
page1.setLayout(layout1)
# 创建第二页
page2 = QWidget(self)
label2 = QLabel('This is page 2!', page2)
button2 = QPushButton('Go to page 1', page2)
button2.clicked.connect(self.on_button_clicked)
layout2 = QVBoxLayout()
layout2.addWidget(label2)
layout2.addWidget(button2)
page2.setLayout(layout2)
# 添加页面到堆叠窗口部件
self.stacked_widget.addWidget(page1)
self.stacked_widget.addWidget(page2)
def on_button_clicked(self):
# 切换页面
current_index = self.stacked_widget.currentIndex()
if current_index == 0:
self.stacked_widget.setCurrentIndex(1)
else:
self.stacked_widget.setCurrentIndex(0)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个示例中,我们创建了两个页面,并在第一页中添加了一个按钮。当按钮被点击时,会切换到第二页。在第二页中也有一个按钮,点击后会切换回第一页。
阅读全文