【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_())
相关推荐
懷淰メ18 小时前
python3GUI--基于深度学习的人脸识别管理系统(详细图文介绍)
人工智能·深度学习·人脸识别·pyqt·人脸·识别系统·人脸管理
我可以将你更新哟1 天前
【PyQT-4】QListWidget列表控件、QComboBox下拉列表控件、QTableWidget表格控件
开发语言·python·pyqt
我可以将你更新哟2 天前
【pyqt-1】把Qt Designer集成到pyCharm,PyQT(窗口、添加空控件、事件处理)
qt·pycharm·pyqt
懷淰メ3 天前
python3GUI--基于YOLOv8深度学习的车牌识别系统(详细图文介绍)
深度学习·opencv·yolo·pyqt·图像识别·车牌识别·pyqt5
大学生毕业题目4 天前
毕业项目推荐:90-基于yolov8/yolov5/yolo11的工程车辆检测识别系统(Python+卷积神经网络)
人工智能·python·yolo·目标检测·cnn·pyqt·工程车辆检测
深蓝海拓4 天前
PySide6从0开始学习的笔记(十八) MVC(Model-View-Controller)模式的图形渲染体系
笔记·python·qt·学习·pyqt
m0_635647485 天前
pyqt5打包报错:qt.qpa.plugin: Could not load the Qt platform plugin “windows“
开发语言·windows·python·qt·pyqt
深蓝海拓6 天前
PySide6从0开始学习的笔记(十二) QProgressBar(进度条)
笔记·python·qt·学习·pyqt
深蓝海拓6 天前
PySide6从0开始学习的笔记(十六) 定时器QTimer
笔记·python·qt·学习·pyqt