python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > PyQt6 布局管理器

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

作者:爬无止境

本文主要介绍了PyQt6 布局管理器的实现示例,包括QVBoxLayout、QHBoxLayout、QFormLayout、QGridLayout,具有一定的参考价值,感兴趣的可以了解一下

PyQt布局管理器有六种:

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()

常用方法

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

您可能感兴趣的文章:
阅读全文