1. 程式人生 > 其它 >14.2 QStackedWidget堆疊視窗控制元件

14.2 QStackedWidget堆疊視窗控制元件

一、QStackedWidget堆疊視窗控制元件

1.基本概念

#1.建立列表(橫著的)
#2.建立視窗
#3.建立堆疊視窗,並把2中的視窗新增進去(豎著的)
#4.建立控制元件,並新增到對應的視窗中
#5.佈局列表和堆疊視窗
#6.點選切換頁面

2.程式碼

點選檢視程式碼
from PyQt5.Qt import *
import sys


class Window(QWidget) :
    def __init__(self) :
        super().__init__()
        self.setWindowTitle("高階控制元件-QStackedWidget堆疊視窗控制元件 - PyQt5中文網")
        self.resize(600, 500)
        self.func_list()

    def func_list(self) :
        self.func()

    def func(self) :
        # 1.建立列表
        self.lists = QListWidget()
        self.lists.insertItem(0, '登陸介面')
        self.lists.insertItem(1, '註冊介面')
        self.lists.insertItem(2, '找回密碼')

        # 2.建立三個視窗
        self.win1 = QWidget()
        self.win2 = QWidget()
        self.win3 = QWidget()

        # 3.建立堆疊視窗
        self.stack = QStackedWidget()
        self.stack.addWidget(self.win1)
        self.stack.addWidget(self.win2)
        self.stack.addWidget(self.win3)

        # 4.建立3個視窗內的控制元件
        layout = QFormLayout()
        layout.addRow('賬號:', QLineEdit())
        layout.addRow('密碼:', QLineEdit())
        layout.addRow(QPushButton('點選登陸'))
        self.win1.setLayout(layout)

        layout1 = QFormLayout()
        layout1.addRow('賬號:', QLineEdit())
        layout1.addRow('密碼:', QLineEdit())
        layout1.addRow('驗證碼:', QLineEdit())
        layout1.addRow(QPushButton('點選註冊'))
        self.win2.setLayout(layout1)

        btn = QPushButton('按鈕')
        layout2 = QFormLayout()
        layout2.addWidget(btn)
        self.win3.setLayout(layout2)

        # 5.佈局介面
        box = QHBoxLayout()
        box.addWidget(self.lists)
        box.addWidget(self.stack)
        self.setLayout(box)

        # 6.增加點選切換介面
        self.lists.currentRowChanged.connect(self.display)

    #槽函式
    def display(self, index) :
        self.stack.setCurrentIndex(index)


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

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

3.效果