【发布时间】:2019-02-19 07:38:31
【问题描述】:
我正在尝试使用 PyQt5 和 QT Creator 制作带有动画可折叠 groupBox 的 UI。
如果 groupBox 未选中,它的高度会缩小到某个较小的值,
如果选中groupBox,则其高度将扩展为sizeHint().height()
问题是当另一个groupBox 出现在布局中时。 anothergroupBox 位置并未反映折叠的groupBox 大小已更改。
有没有办法强制底部groupBox随着折叠groupBox移动?
如下图:
附加信息
groupBox 调整大小实现:
my_ui._ui.groupBox.toggled.connect(my_ui.group_box_size_change)
def group_box_size_change(self):
duration = 1000
self.animaiton_gb = QtCore.QPropertyAnimation(self._ui.groupBox, b"size")
self.animaiton_gb.setDuration(duration)
self.animaiton_gb.setStartValue(QtCore.QSize(self._ui.groupBox.width(), self._ui.groupBox.height()))
if self._ui.groupBox.isChecked():
self.animaiton_gb.setEndValue(QtCore.QSize(self._ui.groupBox.width(), self._ui.groupBox.sizeHint().height()))
else:
self.animaiton_gb.setEndValue(QtCore.QSize(self._ui.groupBox.width(), 49))
self.animaiton_gb.start()
【问题讨论】:
-
请发布一个最小示例来演示问题。
-
我用 gif 替换了最后一张图片,以表明当上层 groupBox 折叠时,下层 groupBox 保持在同一位置。我希望下部 groupBox 向上移动以折叠上部 groupBox,以便它们之间的空间最小。
-
请发布一个最小示例来演示问题minimal reproducible example
-
我重新排列了文本,所以问题从动机开始,然后是当前实施、问题陈述和问题本身。下面是问题的直观表示,以便于理解。新创建的“附加信息”部分应该为那些愿意回答我的问题并需要更多信息的人服务。我希望这种格式更具可读性。
-
尝试将 GroupBox 对象放在 QVBoxLayout 中。那应该自动处理它们的间距和定位。您可能需要选择调整大小事件或类似事件,但我认为它应该可以工作。 layout management 上的文档很不错。
标签: python pyqt pyqt5 qvboxlayout