如何在PyQt5中为QGridLayout添加拉伸?

4

我在网格布局中创建了小部件。这些小部件根据窗口大小进行拉伸。是否有可能避免拉伸并将它们对齐,如下图所示?我已经创建了代码来实现此目的,但我觉得这不是一个直接的解决方案。如果有更好的解决方案,请分享。

网格布局结果:

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('R1C1'),1,1)
window.showMaximized()
app.exec_()

在这里输入图片描述

需要的结果:

在这里输入图片描述

我的代码:

from PyQt5.QtWidgets import *
app =QApplication([])
window=QWidget()
VL=QVBoxLayout(window);HL=QHBoxLayout();VL.addLayout(HL)
GL=QGridLayout();HL.addLayout(GL)
GL.addWidget(QPushButton('R1C1'),0,0)
GL.addWidget(QPushButton('R1C2'),0,1)
GL.addWidget(QPushButton('R2C1'),1,0)
GL.addWidget(QPushButton('R1C1'),1,1)
HL.addStretch();VL.addStretch()
window.showMaximized()
app.exec_()

似乎你已经解决了这个问题,除了你的版本被不必要地压缩和难以阅读之外,还有什么问题吗? - musicamante
1个回答

6

QGridLayout类没有像QBoxLayout.addStretch()那样简单方便的方法来实现这一点。但是可以通过添加一些空的可伸缩行/列来实现相同的效果,例如:

GL.setRowStretch(GL.rowCount(), 1)
GL.setColumnStretch(GL.columnCount(), 1)

screenshot


工作得很好,这正是我期望的。谢谢。 - Viswa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接