You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5中如何为QGridLayout添加拉伸项避免控件随窗口拉伸?

QGridLayout取消控件自动拉伸的优化方案

不需要嵌套额外的QVBoxLayout、QHBoxLayout,直接使用QGridLayout自带的行列拉伸因子配置即可实现需求,代码更简洁易维护。

优化后的完整实现代码:

from PyQt5.QtWidgets import *
app = QApplication([])
window = QWidget()
GL = QGridLayout(window)
# 添加目标控件
GL.addWidget(QPushButton('R1C1'), 0, 0)
GL.addWidget(QPushButton('R1C2'), 0, 1)
GL.addWidget(QPushButton('R2C1'), 1, 0)
GL.addWidget(QPushButton('R2C2'), 1, 1)
# 核心配置:给控件外的空行、空列设置拉伸因子,吃掉窗口多余空间
GL.setRowStretch(2, 1)
GL.setColumnStretch(2, 1)
window.showMaximized()
app.exec_()

配置逻辑说明:

  • setRowStretch(行索引, 拉伸因子)、setColumnStretch(列索引, 拉伸因子)是QGridLayout自带的方法,拉伸因子为0的行列不会分配窗口多余空间,因子越大分配到的多余空间越多。
  • 上述代码中控件占用了索引为0、1的行和列,我们给索引为2的空行、空列设置拉伸因子为1,窗口的所有多余空间都会被这两个空白的行列占用,控件就会保持原有尺寸、停靠在窗口左上角,不会随窗口拉伸变形。
  • 如果需要调整控件的停靠位置(比如居中、停靠右上角等),只需要调整拉伸因子的配置即可,不需要修改布局嵌套结构。

内容的提问来源于stack exchange,提问作者Viswa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:06:10