如何在 PyQt5 中为 QGridLayout 添加拉伸?
Posted
技术标签:
【中文标题】如何在 PyQt5 中为 QGridLayout 添加拉伸?【英文标题】:How to add stretch for QGridLayout in PyQt5? 【发布时间】:2021-12-21 01:59:55 【问题描述】:我在网格布局中创建了小部件。小部件基于窗口进行拉伸。是否可以避免拉伸并将它们对齐,如下图所示?我创建了一个代码来实现这一点,但我觉得这不是一个简单的解决方案。如果有更好的解决方案可以实现这一点,请分享。
网格布局结果:
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_()
【问题讨论】:
看来你已经解决了,你的版本有什么问题(除了不必要的压缩和不可读的文字)? 【参考方案1】:QGridLaout
类没有像QBoxLayout.addStretch()
这样的简单便捷方法来执行此操作。但是可以通过添加一些空的、可拉伸的行/列来实现相同的效果,如下所示:
GL.setRowStretch(GL.rowCount(), 1)
GL.setColumnStretch(GL.columnCount(), 1)
【讨论】:
工作很酷。这是我所期望的。谢谢以上是关于如何在 PyQt5 中为 QGridLayout 添加拉伸?的主要内容,如果未能解决你的问题,请参考以下文章
如何将pyqt5中的后退按钮和前进按钮添加到我的QGridLayout
如何在 QGridLayout 中为隐藏的 QtWaitingSpinner 保留空间?