【问题标题】:PyQt: How to hide everything? (whole application)PyQt:如何隐藏一切? (整个应用程序)
【发布时间】:2020-08-17 23:43:42
【问题描述】:

有没有一种简单的方法可以隐藏所有小部件(本质上是隐藏整个应用程序)?有多个窗口和小部件未附加到任何窗口。我假设它是QApplication([]) 的某种修饰符。

编辑: 感谢@eyllanesc,我的问题的措辞更好:

hide() 方法可防止任何窗口(或小部件)在使用后显示,并且您还希望“显示”方法恢复到以前的状态。

【问题讨论】:

  • 请注意,没有父级的小部件自动成为窗口(如果显示),因此“有多个窗口和小部件未附加到任何窗口”有点令人困惑,至少对我来说是这样。

标签: python-3.x qt pyqt pyqt5 qt5


【解决方案1】:

一种可能的解决方案是使用QApplication::topLevelWidgets() 遍历顶级小部件并将其隐藏:

for tl in QtWidgets.QApplication.topLevelWidgets():
    tl.hide()
    # or 
    # tl.close()

【讨论】:

  • 有什么方法可以切换设置,这样我就不必每次都运行它了吗?
  • @jamesfdearborn 嗯,我不明白你,除了提供minimal reproducible example 更好地解释你自己
  • 当然。对于单个小部件,我可以运行widget.hide(),这将隐藏小部件及其布局,包括在隐藏命令之后添加到所述布局的任何小部件。是否有任何类型的 application.hide() 隐藏所有元素,即使是在隐藏命令之后创建的元素?
  • @jamesfdearborn 这就是我的代码所做的:如果隐藏窗口,那么它的所有子项都将被隐藏,顶层是窗口。你试过我的解决方案了吗?
  • 我已经尝试过您的解决方案,谢谢,非常好。但这个想法是隐藏应用程序的所有子项,而不仅仅是窗口。如果我在您的应用程序中创建一个新小部件,它将不会被隐藏。 application.hide() 的目标是隐藏创建的每个新小部件,并且可以使用 application.show() 轻松关闭。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 2014-04-27
  • 2018-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多