python pyside2 Horizontal Layout布局(QHBoxLayout) 作者:马育民 • 2025-09-14 23:39 • 阅读:10003 # 介绍 `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_()) ``` ### 关键方法解析 1. **创建布局** ```python hbox = QHBoxLayout() self.setLayout(hbox) # 应用到窗口 ``` 2. **添加控件** - `addWidget(widget)`:按顺序添加控件 - `addWidget(widget, stretch, alignment)`:指定伸缩因子和对齐方式 ```python hbox.addWidget(btn, 0, Qt.AlignRight) # 控件靠右对齐 ``` 3. **伸缩项控制** - `addStretch(stretch)`:添加伸缩空间,用于控制控件位置 - 单个伸缩项:`hbox.addStretch(1)` 可将后续控件推到右侧 - 多个伸缩项:按比例分配空间(如 `addStretch(1)` 和 `addStretch(2)` 会按1:2分配) 4. **布局间距设置** - `setSpacing(int)`:设置控件之间的间距 - `setContentsMargins(left, top, right, bottom)`:设置布局与父窗口的边距 5. **嵌套布局** 可以在 `QHBoxLayout` 中嵌套其他布局: ```python vbox = QVBoxLayout() hbox.addLayout(vbox) # 将垂直布局添加到水平布局中 ``` 原文出处:http://www.malaoshi.top/show_1GW1rWDvrSIV.html