当前位置: PyQt5> PyQt5常用控件属性和方法学习> 布局管理器-堆叠布局QStackedLayout

布局管理器-堆叠布局QStackedLayout

2021年2月27日 09:03 575浏览 PyQt5中文网 PyQt5常用控件属性和方法学习

布局管理器-堆叠布局QStackedLayout

################################
# PyQt5中文网 - PyQt5全套视频教程 #
#    https://www.PyQt5.cn/     #
#         主讲: 村长            #
################################

from PyQt5.Qt import *
import sys

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("布局管理器-堆叠布局QStackedLayout - PyQt5中文网")
        self.resize(600, 500)
        self.func_list()

    def func_list(self):
        self.func()

    def func(self):
        # sl = QStackedLayout()
        # self.setLayout(sl)  # 这里作为第二步不能改变,否则会不稳定
        sl = QStackedLayout(self)  # 可以直接取代上面两步

        label1 = QLabel('标签1', self)
        label1.setStyleSheet('background-color:green')
        label2 = QLabel('标签2', self)
        label2.setStyleSheet('background-color:red')
        label3 = QLabel('标签3', self)
        label3.setStyleSheet('background-color:yellow')

        label4 = QLabel('标签4', self)
        label4.setStyleSheet('background-color:green')

        sl.addWidget(label1)
        sl.addWidget(label2)
        sl.addWidget(label3)

        # 根据索引位置插入和获取
        print(sl.insertWidget(0, label4))  # 依然展示label1,但是索引值变成1
        print(sl.widget(0).text())

        # 界面切换方法
        # sl.setCurrentIndex(2)  # 直接设置索引显示
        sl.setCurrentWidget(label2)  # 直接调出控件显示

        # timer = QTimer(self)
        # timer.timeout.connect(lambda :sl.setCurrentIndex((sl.currentIndex() + 1) % sl.count()))
        # timer.start(200)

        # 展示模式
        # QStackedLayout.StackAll
        # QStackedLayout.StackOne  # 只显示当前控件hide()后就没有控件显示了
        sl.setStackingMode(QStackedLayout.StackAll)  # 所有都可见之后,把标签1缩小就能见到后面的控件了
        label2.setFixedSize(100, 100)
        label1.setFixedSize(200, 200)

        # 信号
        # sl.currentChanged()
        # sl.widgetRemoved()  # 控件被移除
        sl.removeWidget(label3)  # 控件被移除后后面的控件会自动显示


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Window()

    window.show()
    sys.exit(app.exec_())


标签栏目

炫酷界面