pyqt5 - 堆叠布局

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])

 

posted @ 2021-07-07 18:47  fly_pig  阅读(572)  评论(0编辑  收藏  举报