PyQt窗口关闭关闭整个应用程序



我在创建PyQt5应用程序时遇到了一些奇怪的问题。关闭窗口会杀死整个应用程序,尽管我不需要它,因为我还有一个托盘图标。我在Debian上运行python3,尽管我认为这无关紧要。

C#有一个解决方案。关闭windows窗体而不退出整个应用程序正在创建另一个表单,但不显示它。PyQt可以吗?

import sys
import PyQt5.QtWidgets
class SettingsMenu(PyQt5.QtWidgets.QDialog):
    def __init__(self, parent):
        super().__init__()
        self.setWindowTitle("Settings")
        self.resize(300, 200)
class ContextMenu(PyQt5.QtWidgets.QMenu):
    def __init__(self):
        super().__init__()
        self.settings_action = self.addAction('Settings')
       self.settings_action.triggered.connect(self.display_settings_menu)
    def display_settings_menu(self, event):
        self.settings_menu = SettingsMenu()
        self.settings_menu.show()
class TrayIcon(PyQt5.QtWidgets.QSystemTrayIcon):
    def __init__(self):
        super().__init__()
        self.setIcon(PyQt5.QtGui.QIcon('icon.xpm'))
        self.setContextMenu(ContextMenu())
if __name__ == '__main__':
    app = PyQt5.QtWidgets.QApplication(sys.argv)
    tray_icon = TrayIcon()
    tray_icon.show()
    sys.exit(app.exec_())
app.setQuitOnLastWindowClosed(False)

解决了我的问题。PyQt5似乎只计算打开和显示的窗口,TrayIcon不算其中之一。

最新更新