2012-01-30 42 views
1
trayiconContextMenu = QtGui.QMenu() 
trayiconContextMenu.addAction("Exit") 
trayicon.setContextMenu(trayiconContextMenu) 

在pyqt中,上下文菜單附加到系統托盤圖標上。
在特定情況下,應用程序退出在內部被調用,但當時如果手動彈出系統托盤菜單,應用程序將不會退出。當應用程序停止時,qsystemtray菜單不隱藏

在按下Esc鍵或在其他某個應用程序(例如)托盤菜單被隱藏時單擊鼠標後,應用程序退出將被錯誤地調用。

trayiconContextMenu.hide() 
/*does not work in my above case.*/ 
trayicon.hide() 
/*hides tray icon alone but not the tray menu*/ 

也爲相同的情況下的應用程序退出正常工作時,托盤菜單沒有彈出。

幫助將不勝感激。

+0

什麼功能,你打電話來退出應用程序?例如'sys.exit'將關閉上下文菜單。 – reclosedev 2012-01-30 15:54:55

+0

QtGui.qApp.exit() – 2012-01-30 16:30:46

+0

無法在Win32上重現。當上下文菜單可見時,'sys.exit'和'QtGui.qApp.exit()'立即關閉應用程序。 – reclosedev 2012-01-30 16:42:52

回答

0

QSystemTrayIcon在設置菜單時沒有取得菜單的所有權,所以您可能需要採取措施確保它被正確刪除。

嘗試這樣:

trayiconContextMenu = QtGui.QMenu() 
trayiconContextMenu.setAttribute(QtCore.Qt.WA_DeleteOnClose) 
... 
trayiconContextMenu.close() 
QtGui.qApp.quit() 
+0

謝謝,但托盤菜單沒有得到隱藏,而且我的應用程序不會停止,雖然我需要時直接調用QtGui.qApp.quit(),因爲托盤菜單彈出並滾動通過托盤菜單。 – 2012-02-01 16:38:03

相關問題