【问题标题】:qsystemtray menu is not hiding when the application stopped应用程序停止时 qsystemtray 菜单未隐藏
【发布时间】:2012-01-30 15:35:36
【问题描述】:
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*/

当托盘菜单没有弹出时,同样的场景应用退出也能正常工作。

非常感谢您的帮助。

【问题讨论】:

  • 你调用什么函数来退出应用程序?例如sys.exit 将关闭上下文菜单。
  • 无法在 Win32 上重现。 sys.exitQtGui.qApp.exit() 在上下文菜单可见时立即关闭应用程序。
  • 好吧,我可以在我的 mac 中重现它。抱歉,有关操作系统类型的信息延迟

标签: python qt pyqt


【解决方案1】:

QSystemTrayIcon 在您设置菜单时并不拥有该菜单的所有权,因此您可能需要采取措施确保它被正确删除。

试试这样的:

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

【讨论】:

  • 谢谢,但是托盘菜单没有隐藏,而且我的应用程序也没有停止,尽管我在需要时直接调用 QtGui.qApp.quit(),因为托盘菜单弹出并滚动托盘菜单.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 2014-09-05
相关资源
最近更新 更多