2016-06-20 9 views
1

私はpythonとpyqtを初めて使っているので、今日はそれらを学び、小さなシステムトレイの悪魔を書く それが実行されますが、 "about"をクリックしてダイアログを閉じると、アプリの終了。 pyqtシステムトレイアイコン終了時メニュー項目

次のように簡単なコードなぜ私にはわからない:

import sys 
from PyQt4 import QtGui 

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

     # about action 
     aboutAction = QtGui.QAction("About", self) 
     aboutAction.triggered.connect(self.about_fun) 
     self.menu.addAction(aboutAction) 

     # quit action 
     quitAction = QtGui.QAction("Quit", self) 
     quitAction.triggered.connect(self.quit_fun) 
     self.menu.addAction(quitAction) 

     # 
     self.setContextMenu(self.menu) 

     # listen activated 
     self.activated.connect(self.iconActivated) 

    def about_fun(self): 
     QtGui.QMessageBox.about(self.parent(), "about", "pyqt system tray") 

    def quit_fun(self): 
     sys.exit(0) 

    def iconActivated(self, reason): 
     if reason == QtGui.QSystemTrayIcon.Trigger: 
      print 'left click: TODO' 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    trayIcon = SystemTrayIcon(QtGui.QIcon("trash.svg")) 
    trayIcon.show() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

答えて

3

あなたがアプリケーションを設定することができますが、プロパティをFalseにquitOnLastWindowClosed:

def main(): 
    app = QtGui.QApplication(sys.argv) 
    app.setQuitOnLastWindowClosed(False) 
    trayIcon = SystemTrayIcon(QtGui.QIcon("trash.svg")) 
    trayIcon.show() 
    sys.exit(app.exec_()) 
関連する問題