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

How to add stretch for QGridLayout in PyQt5?

我在网格布局中创建了小部件。小部件基于 window 进行拉伸。是否可以避免拉伸并如下图所示对齐它们?我创建了一个代码来实现这一点,但我觉得这不是一个简单的解决方案。如果有更好的解决方案,请分享。

网格布局结果:

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_()

QGridLaout class 没有任何像 QBoxLayout.addStretch() 这样简单方便的方法来做到这一点。但是可以通过添加一些空的、可拉伸的rows/columns来达到同样的效果,像这样:

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