1. 前言
转载: 《PyQt5 Designer 快速掌握》02 所谓堆叠布局_庸了个白's blog-CSDN博客_pyqt5 堆叠布局
2. 代码
from PyQt5.QtWidgets import QApplication, QStackedLayout, QWidget # 导入生成的 ui from main_ui import Ui_main from home_page import Ui_home_page from blog_page import Ui_blog_page from contact_page import Ui_contact_page class FrameHomePage(QWidget, Ui_home_page): def __init__(self): super().__init__() self.setupUi(self) class FrameBlogPage(QWidget, Ui_blog_page): def __init__(self): super().__init__() self.setupUi(self) class FrameContactPage(QWidget, Ui_contact_page): def __init__(self): super().__init__() self.setupUi(self) class MainWidget(QWidget, Ui_main): """ 主窗口 """ def __init__(self): super().__init__() self.setupUi(self) # 实例化一个堆叠布局 self.qsl = QStackedLayout(self.frame) # 实例化分页面 self.home = FrameHomePage() self.blog = FrameBlogPage() self.contact = FrameContactPage() # 加入到布局中 self.qsl.addWidget(self.home) self.qsl.addWidget(self.blog) self.qsl.addWidget(self.contact) # 控制函数 self.controller() def controller(self): self.pushButton_home.clicked.connect(self.switch) self.pushButton_blog.clicked.connect(self.switch) self.pushButton_contact.clicked.connect(self.switch) def switch(self): sender = self.sender().objectName() index = { "pushButton_home": 0, "pushButton_blog": 1, "pushButton_contact": 2, } self.qsl.setCurrentIndex(index[sender])