【问题标题】:How to hide a layout in PyQt?如何在 PyQt 中隐藏布局?
【发布时间】:2015-03-26 09:48:31
【问题描述】:

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

【问题讨论】:

    标签: python pyqt4


    【解决方案1】:

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

    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()
    

    我一直在寻找这样的解决方案,希望这会有所帮助:)

    【讨论】:

    • 酷!非常感谢!
    • 这行得通!截至 2021 年 1 月 4 日在 pyqt5 中。谢谢!
    • 惊人的答案,值得更多的信任,这基本上是那些欢迎指南的基础,点击一个项目会显示特定的小部件和文本
    【解决方案2】:

    您无法隐藏布局,但可以隐藏小部件。

    所以首先将所有小部件放入一个容器小部件中。然后将您的信号连接到容器小部件的setHidden() 插槽。您的信号应该发出TrueFalse,具体取决于您是要隐藏还是显示小部件。或者,您可以将信号连接到一个简单的切换插槽,如下所示:

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

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

    【讨论】:

    • 酷!非常感谢!
    • 这也是一个很好的解决方案!我很高兴你提出了这个问题,这就是为什么仍然回答可能不是直接回答提问者的答案是件好事,至少这可能是相似的,因为像我这样 5 年前一直在搜索问题的人觉得这很有帮助.谢谢!
    猜你喜欢
    • 2014-04-27
    • 2016-06-30
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多