如何在PyQt中隐藏布局



我的代码包含一个垂直框布局,它是左侧垂直框布局和右侧垂直框布局的组合。我想知道是否有一种方法可以在发出特定信号时隐藏左侧布局及其所有小部件。

你可以作弊并使用框架而不是布局:它的工作方式完全相同,只是你必须在框架上设置布局才能正常工作。然后您可以执行以下操作:

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()插槽。您的信号应该发出TrueFalse,这取决于您是想隐藏还是显示小部件。或者,你可以将信号连接到一个简单的切换插槽,比如:

    def toggleLeftWidget(self):
        self.leftWidget.setHidden(not self.leftWidget.isHidden())

在这种情况下,你发出的信号是什么并不重要。

最新更新