python pyside2 GridLayout布局 作者:马育民 • 2025-09-14 22:41 • 阅读:10002 # 介绍 `QGridLayout` 是 PySide2 中非常实用的网格布局管理器,它能让你像在表格中一样精确地排列界面元素。 ### 作用 `QGridLayout` 通过行号和列号(均从 0 开始)来定位控件,支持控件跨多行多列,还能设置行列的拉伸策略,适应窗口大小变化。 # 例子 ``` import sys from PySide2.QtWidgets import (QApplication, QWidget, QGridLayout, QPushButton, QLabel, QLineEdit, QTextEdit) class AdvancedGridLayout(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 创建网格布局 grid = QGridLayout() # 设置控件之间的间距(水平和垂直) grid.setSpacing(10) # 添加标题(跨4列) title = QLabel("用户信息表单") title.setStyleSheet("font-size: 16px; font-weight: bold;") grid.addWidget(title, 0, 0, 1, 4) # 行0,列0,跨1行4列 # 第一行控件 name_label = QLabel("姓名:") grid.addWidget(name_label, 1, 0) name_edit = QLineEdit() grid.addWidget(name_edit, 1, 1, 1, 3) # 跨1行3列 # 第二行控件 age_label = QLabel("年龄:") grid.addWidget(age_label, 2, 0) age_edit = QLineEdit() grid.addWidget(age_edit, 2, 1) gender_label = QLabel("性别:") grid.addWidget(gender_label, 2, 2) gender_edit = QLineEdit() grid.addWidget(gender_edit, 2, 3) # 第三行:备注(跨2行) note_label = QLabel("备注:") grid.addWidget(note_label, 3, 0) note_edit = QTextEdit() grid.addWidget(note_edit, 3, 1, 2, 3) # 行3,列1,跨2行3列 # 按钮区域 ok_btn = QPushButton("确定") grid.addWidget(ok_btn, 5, 2) cancel_btn = QPushButton("取消") grid.addWidget(cancel_btn, 5, 3) # 设置行列伸缩因子(窗口大小变化时的拉伸比例) grid.setColumnStretch(1, 2) # 第1列拉伸比例为2 grid.setColumnStretch(3, 1) # 第3列拉伸比例为1 grid.setRowStretch(3, 1) # 第3行拉伸比例为1 # 应用布局 self.setLayout(grid) # 窗口设置 self.setWindowTitle('高级 GridLayout 示例') self.setGeometry(300, 300, 500, 300) # 位置(x,y)和大小(w,h) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = AdvancedGridLayout() sys.exit(app.exec_()) ``` ## 代码解释 ### 布局创建 `QGridLayout()` 初始化网格布局,`setSpacing(10)` 设置控件间距为10像素。 ### 添加控件 - `addWidget(widget, row, col)`:基本用法,将控件放在指定行列 - `addWidget(widget, row, col, row_span, col_span)`:扩展用法,设置控件跨越的行数和列数(如标题跨4列,备注框跨2行3列) ### 伸缩控制 - `setColumnStretch(col, factor)`:设置列的拉伸因子,数值越大,窗口缩放时该列占比越大 - `setRowStretch(row, factor)`:设置行的拉伸因子,类似列的设置 ### 窗口适配 通过伸缩因子的设置,当用户调整窗口大小时,界面元素会按比例自动调整,保持良好的布局效果。 原文出处:http://www.malaoshi.top/show_1GW1rWF8OYbb.html