2016-10-27 32 views
0

私はsystrayクラスと、MessageBoxをポップアップするActionを持っています。 メッセージボックスにOKをクリックすると、アプリケーションが終了します。なぜですか?私はやめたくない。それを修正するには?PyQt、MessageBoxアプリケーションが終了した後、なぜですか?

import sys 
from PyQt4 import QtGui, QtCore 

class SystemTrayIcon(QtGui.QSystemTrayIcon): 
    def __init__(self, icon, parent=None): 
     QtGui.QSystemTrayIcon.__init__(self, icon, parent) 

     menu = QtGui.QMenu(parent) 
     exitAction = menu.addAction("Exit") 
     helloAction = menu.addAction("Hello World") 

     self.setContextMenu(menu) 
     QtCore.QObject.connect(exitAction, QtCore.SIGNAL('triggered()'), self.exit) 
     QtCore.QObject.connect(helloAction, QtCore.SIGNAL('triggered()'), self.hello) 

    def exit(self): 
     QtCore.QCoreApplication.exit() 

    def hello(self): 
     msg = QtGui.QMessageBox.information(self.parent(), "Hello", "Hello World") 

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

    w = QtGui.QWidget() 
    trayIcon = SystemTrayIcon(QtGui.QIcon("qtLogo.png"), w) 

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

if __name__ == '__main__': 
    main() 

答えて

1

app.setQuitOnLastWindowClosed(False)を設定する必要があります。したがって:

app = QtGui.QApplication(sys.argv) 
app.setQuitOnLastWindowClosed(False) 

これは、ウィンドウが閉じるときに終了することを停止します。

+0

私はそれをQtGui.QMessageBox()に変更しますが、アプリは終了します... – demosthenes

+0

メインウィジェットは非表示です。 w.show()を呼び出すとウィジェットが表示され、アプリケーションは終了しません。しかし、私はウィジェットを表示したくない。これはシストレイアプリだけです。 – demosthenes

+0

はい、面白いです。私はあなたのコードを取り、あなたが持っている問題を再現しました。私がそれを把握すれば、私は更新します。 –

関連する問題