PyQt点击‘Go to work’切换窗口后任务栏图标消失问题求助
解决Qt应用隐藏主窗口后任务栏图标消失的问题
你遇到的是PyQt/PySide这类Qt框架里的常见行为:当主窗口被隐藏后,系统会判定应用没有活跃的顶层窗口,因此任务栏上的应用图标就跟着消失了。下面给你几个实用的解决方案:
方法1:禁止应用在最后一个窗口关闭时退出
这个思路是让应用即使所有窗口都处于隐藏状态,也保持运行状态,这样任务栏图标就能一直保留。
首先在应用初始化的地方加上关键设置:
from PyQt5.QtWidgets import QApplication import sys app = QApplication(sys.argv) # 核心配置:最后一个窗口关闭时不自动退出应用 app.setQuitOnLastWindowClosed(False)
然后修改你的start方法,同时处理新窗口关闭后的逻辑(避免应用一直后台驻留):
def start(self): window = MainWindow(self) window.show() # 自定义新窗口的关闭事件:关闭时显示原主窗口(也可以改成直接退出应用,按需调整) def on_new_window_closed(event): self.show() event.accept() window.closeEvent = on_new_window_closed self.hide()
方法2:让新窗口与主窗口共享任务栏分组
通过设置窗口标志,让新窗口和主窗口归为同一个任务栏分组,这样只要新窗口处于显示状态,任务栏图标就会保持存在。
修改你的start方法即可:
from PyQt5.QtCore import Qt def start(self): window = MainWindow(self) # 设置窗口标志,确保新窗口作为顶层窗口且和主窗口同属一个任务栏组 window.setWindowFlags(Qt.Window | Qt.WindowTitleHint | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint) window.show() # 将新窗口设置为当前活跃窗口 window.activateWindow() self.hide()
额外提示
- 如果你的
MainWindow继承自QMainWindow,以上两种方法都可以直接使用。 - 要是你希望主窗口完全隐藏(不在任务栏显示单独的窗口条目),方法1会更适配你的需求,因为它只会保留一个应用级别的任务栏图标。
内容的提问来源于stack exchange,提问作者Joe Doe




