【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_())
相关推荐
典典分享指南1 天前
Excel SUMIFS 跨表汇总实战:多表条件求和的完整指南
django·flask·numpy·pyqt·fastapi
狮子雨恋4 天前
【无标题】
pyqt
微小冷7 天前
pyqt+matplotlib多进程图像刷新
pyqt·matplotlib·进程通信·多进程·queue·process
千里码aicood7 天前
PyQt基于卷积神经网络的智慧校园的设计与实现
人工智能·cnn·pyqt
千里码aicood7 天前
基于PyQt心理咨询机器人智能系统的设计与实现
机器人·pyqt
典典分享指南7 天前
Windows 自动化踩坑实录
python·intellij-idea·pyqt·emacs·visual studio
深蓝海拓10 天前
基于QtPy (PySide6) 的PLC-HMI工程实战记录(五)为当前动作画面的信号连接变量
网络·笔记·python·学习·pyqt
智购科技自动售卖机厂家13 天前
2026自动售货机OTA升级系统设计:从全量升级到差分升级的带宽优化工程实践~YH
大数据·人工智能·numpy·pyqt·fastapi
【赫兹威客】浩哥13 天前
【无标题】
python·spring·django·pyqt
小灰灰搞电子15 天前
PyQt QTextBoundaryFinder类详解:精准定位文本边界
pyqt