ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

PyQt:QMessageBox之后退出QSystemTrayIcon程序

2019-11-11 10:08:34  阅读:667  来源: 互联网

标签:taskbar pyqt5 python-3-x pyqt python


我有一个主要基于QSystemTrayIcon的简单脚本.一切正常,找到并右键单击退出程序的任务栏图标.我想添加一个QMessageBox,然后选择是,退出程序.否则,什么都不做.

我对所有这些都很熟悉,但是它并没有按预期的方式工作,因此是个问题.我创建了一个最小的示例来演示该问题:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets


class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
    def __init__(self, icon, parent=None):
        QtWidgets.QSystemTrayIcon.__init__(self, icon, parent)
        self.menu = QtWidgets.QMenu(parent)
        self.exit_action = self.menu.addAction("Exit")
        self.setContextMenu(self.menu)
        self.exit_action.triggered.connect(self.slot_exit)

        self.msg_parent = QtWidgets.QWidget()

    def slot_exit(self):
        reply = QtWidgets.QMessageBox.question(self.msg_parent, "Confirm exit",
                                               "Are you sure you want to exit Persistent Launcher?",
                                               QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No)
        # if reply == QtWidgets.QMessageBox.Yes:
        #     QtCore.QCoreApplication.exit(0)


def main():
    app = QtWidgets.QApplication(sys.argv)

    tray_icon = SystemTrayIcon(QtGui.QIcon("TheIcon.png"))

    tray_icon.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

现在您可以看到,在slot_exit()函数中,无论我选择是还是否,程序都将退出(代码为0,无错误).评论部分是我希望根据选择来确定操作的内容.您能否帮我弄清楚为什么会发生这种现象,以及仅在“是”时退出的正确方法是什么?

我正在使用Windows 10、64位,Python Anaconda 3.5.2 32位和PyQt 5.7.

解决方法:

问题是关闭所有Windows时都会退出Qt.只需使用以下命令将其禁用:

app.setQuitOnLastWindowClosed(False)

在您的main()中.

标签:taskbar,pyqt5,python-3-x,pyqt,python
来源: https://codeday.me/bug/20191111/2019252.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有