1. 程式人生 > 其它 >10.5 QStackedLayout堆疊佈局管理器

10.5 QStackedLayout堆疊佈局管理器

一、QStackedLayout堆疊佈局管理器

1.基本概念

  • QStackedLayout堆疊佈局管理器學習的內容比較少,在實際開發中主要用於介面的切換,這裡主要了解其堆疊規則:介面切換方法,展示模式等功能的使用。

2.程式碼

點選檢視程式碼
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) :
        # 1.建立 ---頁面切換 就是堆疊佈局
        # 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)

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

        # 3.介面切換方法
        # sl.setCurrentIndex(2)  # 直接設定索引顯示
        # sl.setCurrentWidget(label2)  # 直接調出控制元件顯示

        # timer = QTimer(self)
        # timer.timeout.connect(lambda :sl.setCurrentIndex((sl.currentIndex() + 1) % sl.count()))
        # timer.start(200)
        '''
         # 4.展示模式
        # QStackedLayout.StackAll
        # QStackedLayout.StackOne  # 只顯示當前控制元件hide()後就沒有控制元件顯示了
        '''
        sl.setStackingMode(QStackedLayout.StackAll)  # 所有都可見之後,把標籤1縮小就能見到後面的控制元件了
        label1.setFixedSize(200, 200)
        label2.setFixedSize(300, 300)

        '''
        # 訊號
        # sl.currentChanged()
        # sl.widgetRemoved()  # 控制元件被移除
        '''

        # sl.removeWidget(label3)  # 控制元件被移除後後面的控制元件會自動顯示


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

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

3.效果