在PyQt5中,页面布局是通过布局管理器(Layout Managers)来实现的,这些布局管理器能够自动调整窗口组件的位置和大小,以适应窗口尺寸的变化。以下是几种常用的布局方式及其基本使用方法:
1. QHBoxLayout(水平布局)
水平布局会将子控件从左到右排列。
python
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QHBoxLayout
app = QApplication([])
window = QWidget()
layout = QHBoxLayout()
label = QLabel("Hello, PyQt5!")
button = QPushButton("Click me!")
layout.addWidget(label) # 在水平布局中添加标签
layout.addWidget(button) # 在水平布局中添加按钮
window.setLayout(layout) # 设置窗口的布局为水平布局
window.show()
app.exec_()
2. QVBoxLayout(垂直布局)
垂直布局会将子控件从上到下排列。
python
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout
app = QApplication([])
window = QWidget()
layout = QVBoxLayout()
label = QLabel("Vertical Layout Example")
button = QPushButton("Button 1")
button2 = QPushButton("Button 2")
layout.addWidget(label) # 在垂直布局中添加标签
layout.addWidget(button) # 在垂直布局中添加按钮1
layout.addWidget(button2) # 在垂直布局中添加按钮2
window.setLayout(layout) # 设置窗口的布局为垂直布局
window.show()
app.exec_()
3. QGridLayout(网格布局)
网格布局允许你以网格的形式放置控件,指定每个控件所在的行和列。
python
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QGridLayout
app = QApplication([])
window = QWidget()
layout = QGridLayout()
label1 = QLabel("1, 1")
label2 = QLabel("1, 2")
button = QPushButton("2, 1")
layout.addWidget(label1, 0, 0) # 第一行第一列
layout.addWidget(label2, 0, 1) # 第一行第二列
layout.addWidget(button, 1, 0) # 第二行第一列
window.setLayout(layout)
window.show()
app.exec_()
4. QFormLayout(表单布局)
表单布局常用于创建带有标签和输入字段的表单。
python
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QFormLayout
app = QApplication([])
window = QWidget()
layout = QFormLayout()
name_label = QLabel("Name:")
name_field = QLineEdit()
layout.addRow(name_label, name_field) # 添加行:标签和输入框
window.setLayout(layout)
window.show()
app.exec_()