PyQt:应用程序意外退出主循环

我有一个简单的PyQt应用程序,该应用程序带有任务栏图标,可以通过单击关闭按钮或任务栏图标从任务栏隐藏。可以从任务栏图标上下文菜单中关闭应用程序。用户在上下文菜单中单击“退出”后,将出现带有确认问题的模态窗口。如果用户单击“是”,则应用程序关闭,如果“否”,则应用程序继续运行。


当主窗口隐藏时,即使用户在模式窗口中单击“否”,应用程序也将关闭,但是在不隐藏窗口的情况下,一切正常。对于任何模式窗口,例如某些信息,也会发生这种情况。我想QtGui.QMessageBox.question的父参数中有一些“魔术”,但我不知道如何处理。请帮助修复此烦人的错误。


这是代码:


import sys

from datetime import datetime

from PyQt4 import QtGui, QtCore



class SampleWindow(QtGui.QWidget):


    def __init__(self):

        QtGui.QWidget.__init__(self)

        self.init_ui()


        self.tray_icon.activated.connect(self.tray_click)

        self.show_window.triggered.connect(self.show_from_tray)

        self.now_button.triggered.connect(self.info)

        self.appexit.triggered.connect(self.app_close)


    def init_ui(self):

        self.setGeometry(300, 300, 250, 150)

        self.setWindowTitle('Message box')

        self.tray_icon = QtGui.QSystemTrayIcon()

        self.tray_icon.setIcon(QtGui.QIcon('clock.ico'))

        self.tray_icon.show()

        self.iconMenu = QtGui.QMenu()

        self.show_window = self.iconMenu.addAction("MyApp")

        self.show_window.setDisabled(True)

        self.iconMenu.addSeparator()

        self.now_button = self.iconMenu.addAction("Now")

        self.appexit = self.iconMenu.addAction("Exit")

        self.tray_icon.setContextMenu(self.iconMenu)


    def info(self):

        now = str(datetime.now())

        QtGui.QMessageBox.information(self, 'Now', now)


    def app_close(self):

        info_msg = "Are you sure to quit?"

        reply = QtGui.QMessageBox.question(self,

                                           'Exit',

                                           info_msg,

                                           QtGui.QMessageBox.Yes,

                                           QtGui.QMessageBox.No)

        if reply == QtGui.QMessageBox.Yes:

            QtGui.QApplication.quit()


    def closeEvent(self, event):

        self.hide_to_tray()

        event.ignore()



不负相思意
浏览 322回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python