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


微信扫一扫