【问题标题】:PyQt Window Closing Closes the Entire ApplicationPyQt 窗口关闭关闭整个应用程序
【发布时间】:2015-02-08 08:21:16
【问题描述】:

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

C# 有一个解决方案。 Close a windows form without exiting the entire application 创建另一个表单,但不显示它。 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_())

【问题讨论】:

    标签: python-3.x pyqt5


    【解决方案1】:
    app.setQuitOnLastWindowClosed(False)
    

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

    【讨论】:

    • 这解决了我的问题。关闭任何新窗口,包括在 QFileDialog 中选择一个文件,都很快让我的应用程序退出(我必须添加正常退出)。你的回答解决了我的问题,谢谢一百万!
    猜你喜欢
    • 2011-09-19
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多