当前位置: 代码网 > it编程>编程语言>C/C++ > PyQt6 布局管理器的六种实现示例

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

2025年05月14日 C/C++ 我要评论
pyqt布局管理器有六种:move()方法布局垂直布局管理器qvboxlayout()水平布局管理器qhboxlayout()表单布局管理器qformlayout()网格布局管理器qgridlayou

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 布局管理器内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com