【发布时间】:2015-03-26 09:48:31
【问题描述】:
我的代码包含一个垂直框布局,它是左侧的垂直框布局和右侧的垂直框布局的组合。我想知道是否有一种方法可以在发出某个信号时隐藏左侧布局及其所有小部件。
【问题讨论】:
我的代码包含一个垂直框布局,它是左侧的垂直框布局和右侧的垂直框布局的组合。我想知道是否有一种方法可以在发出某个信号时隐藏左侧布局及其所有小部件。
【问题讨论】:
您可以作弊并使用框架而不是布局:它的工作方式完全相同,除了您必须在框架上设置布局才能使其正常工作。然后,您可以执行以下操作:
from PyQt5 import QtWidgets
# create the frame object.
frame = QtWidgets.QFrame()
# you can do this with any layout - vbox, grid, hbox...
# There will not be more than one item in it anyway.
ly = QtWidgets.QVBoxLayout()
frame.setLayout(ly)
# we're assuming here that parent_layout is some outside layout object.
parent_layout.addWidget(frame)
# hide the frame and its contents
frame.hide()
# show the frame and its contents
frame.show()
我一直在寻找这样的解决方案,希望这会有所帮助:)
【讨论】:
您无法隐藏布局,但可以隐藏小部件。
所以首先将所有小部件放入一个容器小部件中。然后将您的信号连接到容器小部件的setHidden() 插槽。您的信号应该发出True 或False,具体取决于您是要隐藏还是显示小部件。或者,您可以将信号连接到一个简单的切换插槽,如下所示:
def toggleLeftWidget(self):
self.leftWidget.setHidden(not self.leftWidget.isHidden())
在这种情况下,你发出什么信号并不重要。
【讨论】: