PyQt5常用操作之布局

QStackedLayout

QStackedLayout:提供了多页面切换的布局,一次只能看到一个界面。 抽屉布局

# -*- coding = utf-8 -*-
# @Time : 2022/9/6 0:12
# @Author : Arthur
# @FileName : 抽屉布局练习.py
# @Software : Pycharm
import sys

from PyQt5.QtWidgets import QApplication, QWidget, QStackedLayout, QVBoxLayout, QPushButton, QLabel


class Window1(QWidget):
    def __init__(self):
        super().__init__()
        QLabel('我是抽屉1中显示的内容', self)
        self.setStyleSheet('background-color:green;')


class Window2(QWidget):
    def __init__(self):
        super().__init__()
        QLabel('我是抽屉2中显示的内容', self)
        self.setStyleSheet('background-color:red;')


class my_window(QWidget):
    def __init__(self):
        super().__init__()
        self.create_stacked_layout()
        self.init_ui()

    def create_stacked_layout(self):
        # 创建堆叠(抽屉)布局
        self.stacked_layout = QStackedLayout()
        # 创建单独的widget
        win1 = Window1()
        win2 = Window2()
        # 将创建的2个widget添加到抽屉布局器中
        self.stacked_layout.addWidget(win1)
        self.stacked_layout.addWidget(win2)

    def init_ui(self):
        # 设置widget大小以及固定宽高
        self.setFixedSize(600, 540)

        # 1. 创建整体的布局器
        container = QVBoxLayout()

        # 2. 创建1个要显示具体内容的字widget
        widget = QWidget()
        widget.setLayout(self.stacked_layout)
        widget.setStyleSheet('background-color:grey;')

        # 3. 创建2个按钮,用来点击进行切换抽屉布局器中的widget
        btn1 = QPushButton('抽屉1')
        btn2 = QPushButton('抽屉2')
        # 给按钮添加事件(即点击后要调用的函数)
        btn1.clicked.connect(self.btn1_clicked)
        btn2.clicked.connect(self.btn2_clicked)

        # 4. 将需要显示的空间添加到布局器中
        container.addWidget(widget)
        container.addWidget(btn1)
        container.addWidget(btn2)

        # 5. 设置当前要显示的widget,从而能够显示这个布局器中的控件
        self.setLayout(container)

    def btn1_clicked(self):
        # 设置抽屉布局器的当前索引值,即可切换显示哪个widget
        self.stacked_layout.setCurrentIndex(0)

    def btn2_clicked(self):
        # 设置抽屉布局器的当前索引值,即可切换显示哪个widget
        self.stacked_layout.setCurrentIndex(1)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = my_window()
    w.show()

    app.exec_()

原创文章,作者:朋远方,如若转载,请注明出处:https://caovan.com/pyqt5changyongcaozuozhibuju/.html

(0)
打赏 微信扫一扫 微信扫一扫
朋远方的头像朋远方
上一篇 2022年9月4日 下午11:33
下一篇 2022年9月6日 上午9:43

相关推荐

发表回复

登录后才能评论