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