【PyQT-2】布局管理

1 垂直布局和水平布局

python 复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton
import sys
from PyQt5.QtCore import Qt

"""
QVBoxLayout	组件沿垂直方向从上到下排列	登录框(标签 + 输入框 + 按钮竖排)
QHBoxLayout	组件沿水平方向从左到右排列	工具栏(多个按钮横排)
"""


class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        # 设置窗口大小
        self.resize(400, 300)
        # 设置窗口位置
        self.move(600, 300)
        # 设置标题
        self.setWindowTitle('这是一个PyQT窗口')

        # v_layout = QVBoxLayout()  # 垂直布局
        v_layout = QHBoxLayout()  # 水平布局
        btn1 = QPushButton('按钮1', self)
        btn2 = QPushButton('按钮2', self)
        btn3 = QPushButton('按钮3', self)

        # 添加控件,把按钮放入盒子
        v_layout.addWidget(btn1)
        v_layout.addStretch(1)  # 添加伸缩器,里面数字是代表比例值

        v_layout.addWidget(btn2)
        v_layout.addStretch(2)  # 添加伸缩器

        v_layout.addWidget(btn3)

        # 把盒子放入窗体中
        self.setLayout(v_layout)


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

1.1 垂直布局

1.2 水平布局

2 网格布局

python 复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton
import sys
from PyQt5.QtCore import Qt

"""
QGridLayout 网格布局管理器
"""


class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        # 设置窗口大小
        self.resize(400, 300)
        # 设置窗口位置
        self.move(600, 300)
        # 设置标题
        self.setWindowTitle('这是一个PyQT窗口')

        # 网格布局
        g_layout = QGridLayout()
        btn1 = QPushButton('按钮1', self)
        btn2 = QPushButton('按钮2', self)
        btn3 = QPushButton('按钮3', self)
        btn4 = QPushButton('按钮4', self)
        btn5 = QPushButton('按钮5', self)

        g_layout.addWidget(btn1, 0, 0)
        g_layout.addWidget(btn2, 0, 1)
        g_layout.addWidget(btn3, 0, 2)
        g_layout.addWidget(btn4, 1, 0)
        g_layout.addWidget(btn5, 1, 2)

        # 把盒子放入窗体中
        self.setLayout(g_layout)


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

3 表单布局

python 复制代码
from PyQt5.QtWidgets import QApplication, QWidget, QFormLayout, QPushButton, QLabel, QLineEdit, QHBoxLayout
import sys

"""
QFormLayout 表单布局管理器
QLabel 标签组件
QLineEdit 单行输入框
"""


class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        # 设置窗口大小
        self.resize(400, 300)
        # 设置窗口位置
        self.move(600, 300)
        # 设置标题
        self.setWindowTitle('这是一个PyQT窗口')

        # 表单布局
        f_layout = QFormLayout()
        f_layout.addRow(QLabel('用户名:'), QLineEdit())
        f_layout.addRow(QLabel('密码:'), QLineEdit())

        # 水平布局
        h_layout = QHBoxLayout()
        btn_ok = QPushButton("确认", self)
        btn_cancel = QPushButton("取消", self)

        # 加个弹簧隔开
        h_layout.addStretch(1)

        # 添加控件,把按钮放入盒子
        h_layout.addWidget(btn_ok)
        h_layout.addStretch(1)
        h_layout.addWidget(btn_cancel)
        h_layout.addStretch(1)

        # 把水平布局添加到表单布局
        f_layout.addRow(h_layout)

        # 把盒子放入窗体中
        self.setLayout(f_layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())
相关推荐
深蓝海拓19 小时前
PySide6,图形按钮使用系统内置图标
笔记·python·学习·pyqt
懷淰メ3 天前
【AI加持】基于PyQt+YOLO+DeepSeek的钢材焊接缺陷检测系统(详细介绍)
yolo·目标检测·计算机视觉·pyqt·缺陷检测·deepseek·钢材缺陷
爱码小白5 天前
排除LhPyQt5疑难bug的经验
python·pyqt
懷淰メ6 天前
【AI加持】基于PyQt+YOLO+DeepSeek的安全帽检测系统(详细介绍)
yolo·目标检测·计算机视觉·pyqt·安全帽检测·deepseek·安全帽
懷淰メ6 天前
【AI加持】基于PyQt+YOLO+DeepSeek的PCB缺陷检测系统(详细介绍)
yolo·计算机视觉·pyqt·缺陷检测·pcb·检测系统·pcb缺陷
懷淰メ7 天前
【AI加持】基于PyQt+YOLO+DeepSeek的布匹缺陷检测系统(详细介绍)
yolo·目标检测·计算机视觉·pyqt·缺陷检测·布匹·布匹缺陷
深蓝海拓7 天前
基于QtPy (PySide6) 的PLC-HMI工程项目(十二)最后的工作
网络·笔记·python·学习·pyqt·plc
TOOLS指南8 天前
Python-PyQt界面开发入门-计算器例子
pyqt
小灰灰搞电子9 天前
PyQt QDarkStyle详解-打造专业暗黑界面的瑞士军刀
pyqt·暗黑主题
懷淰メ9 天前
【AI加持】基于PyQt+YOLO+DeepSeek的车型检测系统(详细介绍)
yolo·目标检测·计算机视觉·pyqt·项目设计·deepseek·车型检测