【问题标题】:PyQt / Qt Designer: keeping elements togetherPyQt / Qt Designer:将元素放在一起
【发布时间】:2014-07-22 12:35:12
【问题描述】:

我在 PyQt 的 Qt 设计器中组合了一个小部件,但在应用网格布局后,我很难让元素彼此尽可能靠近。

例如,在这个布局中,我将问号(用作工具提示)设置为距每个输入元素的右侧边缘 2 px:

当我应用网格布局时,这些空间会大量增加(并且在所有 3 行中不一致):

我尝试将水平布局应用于元素行,但即使这样也会导致元素以不一致的方式横向展开。

我是否遗漏了一些明显的东西?有没有办法强制元素与相邻元素保持一定距离?

编辑/更新

感谢three_pineapples' suggestion,我已经放了一些水平间隔器(虽然我不确定我是否按照他的意图做到了?)

这在一定程度上解决了它,但是:

  • 元素和问号之间的间距现在是一致的,但所有行都是 6 像素!
  • 其他元素之间的间距不一致(QLineEdit 和文件浏览按钮之间的间距是 12 像素,而不是我在这里想要的 5)
  • 分隔符的高度与行的高度相同,但 QtDesigner 似乎在文件选择行上方添加了一个奇怪的孤立行。虽然我确信这没什么好担心的,但我更愿意了解事情是如何运作的,以及为什么会这样......

【问题讨论】:

  • 您是否调查过将“水平垫片”放在每行最右侧的单元格中? (您需要在中间行添加另一列)
  • @three_pineapples 我已经尝试过了,请参阅编辑以获取信息!
  • 酷,如果您也可以发布指向 ui 文件的链接,这可能会有所帮助,这样我们就可以看到您是如何布置所有内容的

标签: pyqt qt-designer


【解决方案1】:

您是否尝试过在 QGridLayout 上调用 setSpacing(0) 以减少项目之间的间距? (如果您愿意,还有 setHorizo​​ntalSpacing(x) 和 setVerticalSpacing(y) )。此外,setContentsMargins(0, 0, 0, 0) 将消除网格上的外边距,我认为这不是您要在这里寻找的,但可能与偶然发现此问题的人相关或有用。

片段:

from PyQt4 import QtGui

class MyClass(QtGui.QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)
        p1 = QtGui.QPushButton('One', self)
        p2 = QtGui.QPushButton('Two', self)
        p3 = QtGui.QPushButton('Three', self)
        p4 = QtGui.QPushButton('Four', self)
        grid = QtGui.QGridLayout(self)
        grid.addWidget(p1, 0, 0)
        grid.addWidget(p2, 0, 1)
        grid.addWidget(p3, 1, 0)
        grid.addWidget(p4, 1, 1)
        grid.setContentsMargins(0, 0, 0, 0)  # this seems to be the outer padding of the grid
        grid.setHorizontalSpacing(0)  # I think this is what you're looking for
        grid.setVerticalSpacing(0)
        # grid.setSpacing(0)  # this would set vertical & horizontal spacing at once
        self.setLayout(grid)

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    window = MyClass()
    window.show()
    sys.exit(app.exec_())

我不习惯使用 QtDesigner,但如果您愿意,应该有设置这些属性的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 2020-10-23
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    相关资源
    最近更新 更多