PyQt6 布局管理器的六种实现示例

 更新时间:2025年05月14日 11:13:39   作者:爬无止境  
本文主要介绍了PyQt6 布局管理器的实现示例,包括QVBoxLayout、QHBoxLayout、QFormLayout、QGridLayout,具有一定的参考价值,感兴趣的可以了解一下

PyQt布局管理器有六种:

  • move()方法布局
  • 垂直布局管理器QVBoxLayout()
  • 水平布局管理器QHBoxLayout()
  • 表单布局管理器QFormLayout()
  • 网格布局管理器QGridLayout()
  • 布局嵌套

move()方法

根据窗口坐标布局,类似Tk的place。

import sys

from PyQt6.QtWidgets import *


class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(200,200)

        label1 = QLabel('username:',self)
        entry1 = QLineEdit(self)
        # label2 = QLabel('password', self)
        # entry2 = QLineEdit(self)

        # 布局
        label1.move(40,40)
        entry1.move(80,40)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Window()
    w.show()

    sys.exit(app.exec())

垂直布局管理器QVBoxLayout()

垂直:Vertical   Horizontal: 水平 

Y 与 V 有点类似,V就是Y 垂直布局.

import sys

from PyQt6.QtWidgets import *


class Window(QWidget):
    def __init__(self):
        super().__init__()
        label1 = QLabel("username:", self)
        entry1 = QLineEdit(self)
        label2 = QLabel("password:", self)
        entry2 = QLineEdit(self)

        # 布局
        v_layout = QVBoxLayout()
        v_layout.addWidget(label1)
        v_layout.addWidget(entry1)
        v_layout.addWidget(label2)
        v_layout.addWidget(entry2)
        
        self.setLayout(v_layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Window()
    w.show()

    sys.exit(app.exec())

水平布局管理器QHBoxLayout()

import sys

from PyQt6.QtWidgets import *


class Window(QWidget):
    def __init__(self):
        super().__init__()
        label1 = QLabel("username:", self)
        entry1 = QLineEdit(self)
        label2 = QLabel("password:", self)
        entry2 = QLineEdit(self)

        # 布局
        h_layout = QHBoxLayout()
        h_layout.addWidget(label1)
        h_layout.addWidget(entry1)
        h_layout.addWidget(label2)
        h_layout.addWidget(entry2)

        self.setLayout(h_layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Window()
    w.show()

    sys.exit(app.exec())

表单布局管理器QFormLayout()

常用方法

  • addRow(label, widget): 添加一行,包含标签和控件。例如用户名输入框或密码输入框。

  • setFormAlignment(): 设置整个表单的对齐方式。

  • setLabelAlignment(): 设置标签的对齐方式。

  • addWidget(widget): 添加一个占用整行的控件,比如按钮或描述文字。

import sys

from PyQt6.QtWidgets import *


class Window(QWidget):
    def __init__(self):
        super().__init__()
        label1 = QLabel("username:", self)
        entry1 = QLineEdit(self)
        label2 = QLabel("password:", self)
        entry2 = QLineEdit(self)

        # 布局
        f_layout = QFormLayout()
        f_layout.addRow(label1import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QFormLayout
from PyQt6.QtCore import Qt


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

        # 设置窗口标题和大小
        self.setWindowTitle("Form Alignment Example")
        self.resize(400, 200)

        # 创建表单布局
        form_layout = QFormLayout()

        # 添加标签和输入框
        form_layout.addRow("Username:", QLineEdit())
        form_layout.addRow("Password:", QLineEdit())

        # 添加按钮
        login_button = QPushButton("Login")
        form_layout.addWidget(login_button)

        # 设置表单整体对齐方式
        form_layout.setFormAlignment(Qt.AlignmentFlag.AlignCenter)  # 整体居中
        # 设置标签对齐方式
        form_layout.setLabelAlignment(Qt.AlignmentFlag.AlignRight)  # 标签右对齐

        # 应用布局
        self.setLayout(form_layout)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = FormExample()
    w.show()
    sys.exit(app.exec())
, entry1)
        f_layout.addRow(label2, entry2)


        self.setLayout(f_layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Window()
    w.show()

    sys.exit(app.exec())

网格布局管理器QGridLayout()

类似Tk的grid()布局方式

import sys

from PyQt6.QtWidgets import *


class Window(QWidget):
    def __init__(self):
        super().__init__()
        label1 = QLabel("username:", self)
        entry1 = QLineEdit(self)
        label2 = QLabel("password:", self)
        entry2 = QLineEdit(self)

        # 布局
        grid_layout = QGridLayout()
        grid_layout.addWidget(label1,0,0)
        grid_layout.addWidget(entry1,0,1)
        grid_layout.addWidget(label2,1,0)
        grid_layout.addWidget(entry2,1,1)

        # 应用布局
        self.setLayout(grid_layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Window()
    w.show()

    sys.exit(app.exec())

布局嵌套

布局管理器除了可以添加控件,还可以添加子布局

import sys

from PyQt6.QtWidgets import *


class Window(QWidget):
    def __init__(self):
        super().__init__()
        label1 = QLabel("username:", self)
        entry1 = QLineEdit(self)
        label2 = QLabel("password:", self)
        entry2 = QLineEdit(self)

        # 布局
        v_layout = QVBoxLayout()
        h1_layout = QHBoxLayout()
        h1_layout.addWidget(label1)
        h1_layout.addWidget(entry1)

        h2_layout = QHBoxLayout()
        h2_layout.addWidget(label2)
        h2_layout.addWidget(entry2)

        v_layout.addLayout(h1_layout)
        v_layout.addLayout(h2_layout)


        # 应用布局
        self.setLayout(v_layout)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Window()
    w.show()

    sys.exit(app.exec())

到此这篇关于PyQt6 布局管理器的实现示例的文章就介绍到这了,更多相关PyQt6 布局管理器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • python类属性学习深入讲解

    python类属性学习深入讲解

    这篇文章主要介绍了python类属性学习深入讲解,文中对于python的类属性的理解有正在学习python的同学可以一块学习下
    2021-03-03
  • Python判断一个数是否为质数的3种方法(超详细)

    Python判断一个数是否为质数的3种方法(超详细)

    一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除(2, 3, 5, 7等),换句话说就是该数除了1和它本身以外不再有其他的因数,下面这篇文章主要给大家介绍了关于利用Python判断一个数是否为质数的3种方法,需要的朋友可以参考下
    2024-09-09
  • 5款非常棒的Python工具

    5款非常棒的Python工具

    这篇文章主要为大家详细介绍了5款非常棒的Python工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • python实现大学人员管理系统

    python实现大学人员管理系统

    这篇文章主要为大家详细介绍了python实现大学人员管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例

    Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例

    这篇文章主要介绍了Python数据结构与算法之图的最短路径(Dijkstra算法),结合完整实例形式分析了Python图的最短路径算法相关原理与实现技巧,需要的朋友可以参考下
    2017-12-12
  • 利用Python绘制好看的玫瑰花图

    利用Python绘制好看的玫瑰花图

    玫瑰花图是节理统计方式之一,方法简便,形象醒目,比较清楚地反映出主要节理的方向,有助于分析区域构造。本文将用Python绘制好看的玫瑰花图,感兴趣的可以了解一下
    2022-05-05
  • Python 中的嵌套字典推导的使用及优势

    Python 中的嵌套字典推导的使用及优势

    Python 字典推导是一个强大的工具,允许您从现有的字典创建新的字典,这篇文章主要介绍了Python中的嵌套字典推导,将探索 Python 嵌套字典推导、它的使用以及在 Python 中使用它的优势,需要的朋友可以参考下
    2023-05-05
  • Python arrow模块使用方法

    Python arrow模块使用方法

    Arrow 是用于处理日期和时间的 Python 模块。 与内置的日期和时间工具相比,它使创建,操作,格式化和转换日期,时间和时间戳变得更加容易
    2022-10-10
  • Python中的sort()方法使用基础教程

    Python中的sort()方法使用基础教程

    这篇文章主要介绍了Python中的sort()方法使用基础教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-01-01
  • Python解析toml配置文件的方法分享

    Python解析toml配置文件的方法分享

    在开发过程中,配置文件是少不了的,而且配置文件是有专门的格式的,比如:ini,yaml,toml等等。本文带大家来看看Python如何解析toml文件,需要的可以参考一下
    2022-09-09

最新评论