【问题标题】:PyQt5: gridlayout spacing issuePyQt5:网格布局间距问题
【发布时间】:2015-04-27 22:27:59
【问题描述】:

我是 PyQt5 的新手。我正在尝试在底部创建一个带有按钮的单元格网格:

 g = QGridLayout(window)     
 for i in range(N):
    for j in range(N):
        b = QPushButton()
        g.addWidget(b, i, j, 1, 1)
 g.addWidget(QPushButton("Last move"), N+4, N//2)

这就是我得到的:

如您所见,按钮破坏了一切。如何消除单元格之间的空间?

【问题讨论】:

    标签: python pyqt pyqt5 qgridlayout cellspacing


    【解决方案1】:

    您需要将底部行中的单元格合并在一起,因此按钮不会获​​得自己的列:

        button = QPushButton("Last move")
        g.addWidget(button, N, 0, 1, N, QtCore.Qt.AlignCenter)
    

    第三个和第四个参数设置单元格的行和列跨度。如果您希望按钮拉伸整个宽度,请省略最后一个参数。

    【讨论】:

    • 谢谢!这解决了我的问题,但我不明白按钮如何影响单元格。
    • @theluckyemil。您的原始示例创建了一个 6x5 网格,按钮被添加到中间列。该列必须拉伸以获取按钮,这会在其右侧创建所有空白空间。合并底行的列意味着按钮不会添加到上面单元格块的中间列。相反,它会为自己获得一个单独的网格布局区域。