q系统托盘菜单在应用停止时未隐藏

1 投票
1 回答
555 浏览
提问于 2025-04-17 11:57
trayiconContextMenu = QtGui.QMenu()
trayiconContextMenu.addAction("Exit")
trayicon.setContextMenu(trayiconContextMenu)

在pyqt中,系统托盘图标会有一个上下文菜单。
在某种情况下,应用程序会内部调用退出,但如果这时手动弹出了系统托盘菜单,应用程序就不会退出。

当你按下Esc键或者在其他应用程序中点击鼠标(也就是说,当托盘菜单隐藏时),应用程序退出会出现错误。

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

而在同样的情况下,当托盘菜单没有弹出时,应用程序的退出是正常的。

如果能得到帮助,那就太好了。

1 个回答

0

QSystemTrayIcon 这个东西在你设置菜单的时候,并不会自动管理这个菜单的生命周期,所以你可能需要采取一些措施来确保它能被正确删除。

你可以试试下面的做法:

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

撰写回答