2012-01-30 25 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

相关问题