PyQt6 布局管理器的六种实现示例
作者:爬无止境
本文主要介绍了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 布局管理器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
