Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt4 QVBoxLayout.addStretch()在不需要时添加不需要的空格_Python_Qt_Pyqt4 - Fatal编程技术网

Python PyQt4 QVBoxLayout.addStretch()在不需要时添加不需要的空格

Python PyQt4 QVBoxLayout.addStretch()在不需要时添加不需要的空格,python,qt,pyqt4,Python,Qt,Pyqt4,我在PyQt4方面遇到了一些问题,因为它的行为不符合要求 我有一个搜索框,下面有一个列表,在搜索框和列表的右侧有一张可选图片 如果没有拉伸间隔,这些项目将获得它们之间的所有多余空间 问题是,当我添加一个拉伸项时,它会占用比列表中没有任何内容时所需的更多的空间,从而在窗口中添加多余的空白空间 这是一个演示该问题的最小示例 加上。伸展 没有,没有 这就是我想要的样子 拉伸的原因是什么 只有列表,此项上没有图片。 列表和图片,没有延伸。 列表和图片,带有拉伸。 这就是我希望它看起来的样子。作为一

我在PyQt4方面遇到了一些问题,因为它的行为不符合要求

我有一个搜索框,下面有一个列表,在搜索框和列表的右侧有一张可选图片

如果没有拉伸间隔,这些项目将获得它们之间的所有多余空间

问题是,当我添加一个拉伸项时,它会占用比列表中没有任何内容时所需的更多的空间,从而在窗口中添加多余的空白空间

这是一个演示该问题的最小示例 加上。伸展

没有,没有 这就是我想要的样子

拉伸的原因是什么 只有列表,此项上没有图片。

列表和图片,没有延伸。

列表和图片,带有拉伸。
这就是我希望它看起来的样子。

作为一种解决方法,在显示窗口后添加拉伸:

self.show()
self.gui_0.addStretch()

我不知道这是否是正确的解决方案,但您似乎可以将窗口高度调整为某个较小的值,然后布局将自动重新扩展到所需的最小高度:

    self.setLayout(self.gui_0)
    self.adjustSize()
    self.resize(self.width(), 1)
    self.show()

但是我仍然不明白为什么布局是用一个冗余的间隔来初始化的…

为什么不能在添加了所有其他项目之后再添加间隔?列表中的项目是根据搜索字段的内容添加和删除的。我可以在更新列表、添加和删除间隔符的过程中添加逻辑,但我更愿意找到解决问题的正确方法。Qt似乎认为窗口应该比我想要的大。将stretch=True添加到搜索框的addWidget中会得到一个大小相同的窗口。不幸的是,这只适用于在主窗口上调用.adjustSize之前。它在这个简单的示例中起作用,因为实际上没有更新任何内容,但是一旦开始添加项目,并且它们占用的空间小于窗口希望的大小,多余的空白就会重新出现。
    self.setLayout(self.gui_0)
    self.adjustSize()
    self.resize(self.width(), 1)
    self.show()