[pyqt5 인터페이스 개발-4] 세로 레이아웃/가로 레이아웃 + '마트료시카' 레이아웃

목차

1. 수직 레이아웃

둘째, 레이아웃의 조합

3. 가로 레이아웃 + 세로 레이아웃(마트료시카)


1. 수직 레이아웃

모듈 필요: QVBoxLayout

        # 垂直布局
        layout = QVBoxLayout()

        ………………

        # 应用设置的布局器
        self.setLayout(layout)

모듈 사이의 리트랙터(스프링으로 이해될 수 있으며 구성 요소 사이에 추가되어 위치가 커짐)

참고: 괄호 안에 숫자를 추가하면 다양한 스프링의 비율을 구별할 수 있습니다.

layout.addStretch()

코드는 클래스에 캡슐화됩니다(이전 코드는 직접 작성됨).

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit, QDesktopWidget, QVBoxLayout


class Windows(QWidget):
    def __init__(self):
        # 调用父类的__init__方法(并传入子类,或实例)
        super(Windows, self).__init__()

        # 设置大小
        self.resize(700, 500)
        self.setWindowTitle("pyqt5程序")  # 窗口标题

        # 垂直布局
        layout = QVBoxLayout()

        # 按钮
        btn1 = QPushButton('账号')
        layout.addWidget(btn1)      # 添加到布局器
        btn2 = QPushButton('密码')
        layout.addWidget(btn2)      # 添加到布局器
        btn3 = QPushButton('确认')
        layout.addWidget(btn3)      # 添加到布局器

        layout.addStretch(2)

        # 应用设置的布局器
        self.setLayout(layout)


if __name__ == '__main__':
    # 接收参数(仅有一个)
    app = QApplication(sys.argv)

    w = Windows()       # 创建一个窗口(继承了QWindows,并封装为一个类)
    w.show()            # 展示窗口
    sys.exit(app.exec_())  # 程序进入循环等待,并在退出时关闭应用



둘째, 레이아웃의 조합

수직 배치기 + 수평 배치기

관계: 마트료시카

대형 레이아웃터에서 여러 레이아웃터의 수직, 수평 관계를 확인한 후 ----> 중첩 인형의 레이아웃터를 별도로 처리합니다.

알아채다:

인형 속 인형의 경우 ---> 그룹으로 묶은 후 그룹의 레이아웃을 설정합니다.

그룹 필수 모듈: QGroupBox

수평 + 수직 모듈: QHBoxLayout, QVBoxLayout

그룹 설정: group1 = QGroupBox()



3. 가로 레이아웃 + 세로 레이아웃(마트료시카)

암호:

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QLineEdit, QDesktopWidget, QHBoxLayout, QVBoxLayout, QGroupBox, QRadioButton


class Windows(QWidget):
    def __init__(self):
        # 调用父类的__init__方法(并传入子类,或实例)
        super(Windows, self).__init__()
        self.init_ui()

    def init_ui(self):
        # 先定义最外层的垂直布局(水平布局是QHBoxLayout):垂直布局+水平布局-->垂直关系
        container = QVBoxLayout()       # 最外层布局器(命名为容器)

        #——————————创建第一个组(垂直布局)——————————#
        group1_box = QGroupBox('target')    # 组
        target_layout = QVBoxLayout()   # 布局

        # 控件
        btn1 = QRadioButton('target1')
        btn2 = QRadioButton('target2')
        btn3 = QRadioButton('target3')
        btn4 = QPushButton('确认')

        # 将控件添加到布局中
        target_layout.addWidget(btn1)
        target_layout.addWidget(btn2)
        target_layout.addWidget(btn3)
        target_layout.addWidget(btn4)

        # 将布局设置到组中
        group1_box.setLayout(target_layout)




        # ——————————创建第二个组(水平布局)——————————#
        group2_box = QGroupBox('test')  # 组
        test_layout = QHBoxLayout()   # 布局

        # 控件
        btn1 = QRadioButton('test1')
        btn2 = QRadioButton('test2')
        btn3 = QRadioButton('test3')


        # 将控件添加到布局中
        test_layout.addWidget(btn1)
        test_layout.addWidget(btn2)
        test_layout.addWidget(btn3)

        # 将布局设置到组中
        group2_box.setLayout(test_layout)



        # 将2个组中添加到最外层布局器中
        container.addWidget(group1_box)
        container.addWidget(group2_box)

        # 设置显示最外层布局器 (布局器的应用)
        self.setLayout(container)

        # 窗口设置
        self.resize(700, 500)            # 设置大小
        self.setWindowTitle("pyqt5程序")  # 窗口标题



if __name__ == '__main__':
    app = QApplication(sys.argv)    # 接收参数(仅有一个)
    w = Windows()           # 创建一个窗口(继承了QWindows,并封装为一个类)
    w.show()                # 展示窗口
    sys.exit(app.exec_())   # 程序进入循环等待,并在退出时关闭应用

추천

출처blog.csdn.net/qq_53079406/article/details/132476563