pyqt5同一窗口下多页面切换
时间: 2023-09-21 22:01:05 浏览: 332
在PyQt5中,可以通过使用QStackedWidget来实现同一窗口下的多页面切换。QStackedWidget类提供了一种堆叠的窗口堆栈,每个页面都是一个QWidget部件。
首先,我们需要导入必要的模块:
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton, QLabel, QStackedWidget
然后,我们创建一个继承自QMainWindow的主窗口类,并在其中添加一个QStackedWidget和两个页面:
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.stacked_widget = QStackedWidget()
self.setCentralWidget(self.stacked_widget)
self.page1 = QWidget()
self.page2 = QWidget()
self.stacked_widget.addWidget(self.page1)
self.stacked_widget.addWidget(self.page2)
我们还需要一个布局管理器,以及在每个页面中显示的一些按钮:
layout1 = QVBoxLayout()
button1 = QPushButton('Go to page 2')
button1.clicked.connect(self.go_to_page2)
layout1.addWidget(QLabel('Page 1'))
layout1.addWidget(button1)
self.page1.setLayout(layout1)
layout2 = QVBoxLayout()
button2 = QPushButton('Go back to page 1')
button2.clicked.connect(self.go_to_page1)
layout2.addWidget(QLabel('Page 2'))
layout2.addWidget(button2)
self.page2.setLayout(layout2)
最后,我们需要在主窗口类中定义两个槽函数,用于在按钮点击时切换页面:
def go_to_page1(self):
self.stacked_widget.setCurrentWidget(self.page1)
def go_to_page2(self):
self.stacked_widget.setCurrentWidget(self.page2)
在主函数中,我们创建一个QApplication实例,并将MainWindow实例化并显示出来:
if __name__ == '__main__':
app = QApplication([])
main_window = MainWindow()
main_window.show()
app.exec()
通过点击两个按钮,我们可以在同一窗口中实现两个页面之间的切换。
阅读全文