[desarrollo de la interfaz pyqt5-6] Desarrollo de la interfaz de diseño del cajón

Tabla de contenido

0x01 Prefacio:

1. Clase de ventana principal encapsulada

Paso 1: encapsular la clase de ventana

Paso 2: agregue una interfaz de cajón

Paso 3: agregue el diseño relevante de la interfaz del cajón

Paso 4: haga clic en el disparador para cada interfaz de cajón

En segundo lugar, la clase de cajón empaquetado.

3. Programa de ingreso al programa

4. Código completo


0x01 Prefacio:

Diseño del cajón (solo se muestra una interfaz a la vez)

Requiere módulo: QStackedLayout

El código completo consta de tres partes: clase de ventana principal encapsulada + clase de cajón encapsulado + programa de entrada de programa

Ideas:

1. Clase de ventana del paquete

2. Primero, hay una interfaz de cajón.

3. Luego hay varios cajones (interfaz) en la interfaz del cajón.

4. Encapsule varias clases de cajones independientes

1. Clase de ventana principal encapsulada

Paso 1: encapsular la clase de ventana

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.create_stack_layout()
        self.init_ui()


Paso 2: agregue una interfaz de cajón

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.create_stack_layout()
        self.init_ui()

#————————————————————————————————————————————————————————————————
# 下面为新增

    def create_stack_layout(self):
        # 创建堆叠(抽屉)布局
        self.stacked_layout = QStackedLayout()
        w1 = Window1()
        w2 = Window2()

        # 将2个添加到抽屉布局中
        self.stacked_layout.addWidget(w1)
        self.stacked_layout.addWidget(w2)

Paso 3: agregue el diseño relevante de la interfaz del cajón

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.create_stack_layout()
        self.init_ui()

    def create_stack_layout(self):
        # 创建堆叠(抽屉)布局
        self.stacked_layout = QStackedLayout()
        w1 = Window1()
        w2 = Window2()

        # 将2个添加到抽屉布局中
        self.stacked_layout.addWidget(w1)
        self.stacked_layout.addWidget(w2)
#————————————————————————————————————————————————————————————————
# 下面为新增

    def init_ui(self):
        self.setWindowTitle('form')
        self.setFixedSize(500,400)
        # 先定义最外层的垂直布局(水平布局是QHBoxLayout)
        container = QVBoxLayout()       # 最外层布局器(命名为容器)
        self.setLayout(container)       # 设置显示最外层布局器 (布局器的应用)


        # 创建要显示的子widget
        widget = QWidget()
        widget.setLayout(self.stacked_layout)
        widget.setStyleSheet("background-color:grey;")


        # 创建2个按钮,用来点击进行切换抽屉布局中的weight
        btn_press1 = QPushButton("界面1")
        btn_press2 = QPushButton("界面2")
        # 给按钮添加事件 (点击后调用的函数)
        btn_press1.clicked.connect(self.btn_pres1_clicked)
        btn_press2.clicked.connect(self.btn_pres2_clicked)


        # 将需要显示的控件添加到布局中
        container.addWidget(widget)
        container.addWidget(btn_press1)
        container.addWidget(btn_press2)


Paso 4: haga clic en el disparador para cada interfaz de cajón

Primero establezca el valor de índice del diseño.

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.create_stack_layout()
        self.init_ui()

    def create_stack_layout(self):
        self.stacked_layout = QStackedLayout()
        w1 = Window1()
        w2 = Window2()
        self.stacked_layout.addWidget(w1)
        self.stacked_layout.addWidget(w2)

    def init_ui(self):
        self.setWindowTitle('form')
        self.setFixedSize(500, 400)
        container = QVBoxLayout()
        self.setLayout(container)

        widget = QWidget()
        widget.setLayout(self.stacked_layout)
        widget.setStyleSheet("background-color:grey;")

        btn_press1 = QPushButton("界面1")
        btn_press2 = QPushButton("界面2")
        btn_press1.clicked.connect(self.btn_press1_clicked)
        btn_press2.clicked.connect(self.btn_press2_clicked)

        container.addWidget(widget)
        container.addWidget(btn_press1)
        container.addWidget(btn_press2)

#————————————————————————————————————————————————————————————————
# 下面为新增

    def btn_press1(self):
        # 设置抽屉布局当前的索引值(即可切换到指定的weight)
        self.stacked_layout.setCurrentIndex(0)

    def btn_press2(self):
        # 设置抽屉布局当前的索引值(即可切换到指定的weight)
        self.stacked_layout.setCurrentIndex(1)

En segundo lugar, la clase de cajón empaquetado.

código:

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;")

3. Programa de ingreso al programa

código:

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

4. Código completo

código:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit, QDesktopWidget, QHBoxLayout, QVBoxLayout, QGroupBox, QRadioButton, QGridLayout, QFormLayout, QStackedLayout


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 MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.create_stack_layout()
        self.init_ui()

    def create_stack_layout(self):
        self.stacked_layout = QStackedLayout()
        w1 = Window1()
        w2 = Window2()
        self.stacked_layout.addWidget(w1)
        self.stacked_layout.addWidget(w2)

    def init_ui(self):
        self.setWindowTitle('form')
        self.setFixedSize(500, 400)
        container = QVBoxLayout()
        self.setLayout(container)

        widget = QWidget()
        widget.setLayout(self.stacked_layout)
        widget.setStyleSheet("background-color:grey;")

        btn_press1 = QPushButton("界面1")
        btn_press2 = QPushButton("界面2")
        btn_press1.clicked.connect(self.btn_press1_clicked)
        btn_press2.clicked.connect(self.btn_press2_clicked)

        container.addWidget(widget)
        container.addWidget(btn_press1)
        container.addWidget(btn_press2)

    def btn_press1_clicked(self):
        self.stacked_layout.setCurrentIndex(0)

    def btn_press2_clicked(self):
        self.stacked_layout.setCurrentIndex(1)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

Efecto de ejemplo:

(interfaz 1)

 (interfaz 2)

Supongo que te gusta

Origin blog.csdn.net/qq_53079406/article/details/132500937
Recomendado
Clasificación