介绍
QHBoxLayout 是 PySide2 中用于水平排列控件的布局管理器,它能让控件在水平方向上依次排列,并自动适应窗口大小变化。以下是其详细使用说明和示例:
功能
- 水平方向排列控件(从左到右)
- 支持添加伸缩项(
addStretch)控制控件间距和对齐 - 可设置控件间距、边距
- 自动响应窗口大小变化
使用场景
- 工具栏、按钮组等水平排列的控件
- 表单中的行元素(如标签+输入框+按钮)
- 需要控制水平对齐的界面元素
通过灵活使用伸缩项和对齐方式,QHBoxLayout 可以实现各种水平方向的布局效果,是构建简洁界面的常用工具。
例子
import sys
from PySide2.QtWidgets import (QApplication, QWidget, QHBoxLayout,
QPushButton, QLabel, QLineEdit)
from PySide2.QtCore import Qt
class HBoxLayoutExample(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 1. 创建水平布局
hbox = QHBoxLayout()
# 2. 设置布局属性
hbox.setSpacing(10) # 控件之间的间距(像素)
hbox.setContentsMargins(20, 20, 20, 20) # 布局边缘边距(上,右,下,左)
# 3. 添加控件
label = QLabel("用户名:")
hbox.addWidget(label)
edit = QLineEdit()
hbox.addWidget(edit)
# 4. 添加伸缩项(关键功能)
# 伸缩项会占据可用空间,推动其他控件
hbox.addStretch(1) # 参数为伸缩因子,多个伸缩项按比例分配空间
# 5. 添加更多控件
btn1 = QPushButton("确定")
hbox.addWidget(btn1)
btn2 = QPushButton("取消")
hbox.addWidget(btn2)
# 6. 应用布局到窗口
self.setLayout(hbox)
# 窗口设置
self.setWindowTitle('QHBoxLayout 使用指南')
self.setGeometry(300, 300, 600, 100)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = HBoxLayoutExample()
sys.exit(app.exec_())
关键方法解析
创建布局
hbox = QHBoxLayout() self.setLayout(hbox) # 应用到窗口添加控件
addWidget(widget):按顺序添加控件addWidget(widget, stretch, alignment):指定伸缩因子和对齐方式hbox.addWidget(btn, 0, Qt.AlignRight) # 控件靠右对齐
伸缩项控制
addStretch(stretch):添加伸缩空间,用于控制控件位置- 单个伸缩项:
hbox.addStretch(1)可将后续控件推到右侧 - 多个伸缩项:按比例分配空间(如
addStretch(1)和addStretch(2)会按1:2分配)
- 单个伸缩项:
布局间距设置
setSpacing(int):设置控件之间的间距setContentsMargins(left, top, right, bottom):设置布局与父窗口的边距
嵌套布局
可以在QHBoxLayout中嵌套其他布局:vbox = QVBoxLayout() hbox.addLayout(vbox) # 将垂直布局添加到水平布局中