2011-08-22 86 views

回答

4

最佳答案给的是从官方文档:

在X窗口系统,窗口管理器必须由freedesktop.org支持无论是 系统托盘协议(使用现代桌面 环境窗口管理器如GNOME> = 2,KDE> = 3和XFCE> = 4全部都是这样)或GNOME 1.2和KDE 1和2中使用的旧方法。如果不存在,则 图标将显示为顶级窗口用户的桌面。

因为不是所有的窗口管理器具有系统托盘,但也不能保证 是wxTaskBarIcon将正常运行X Window系统下等 应用程序应该使用它只是作为他们的 用户界面的一个可选组件。应该要求用户明确启用Unix上的任务栏图标 ,它不应默认为开启。

http://docs.wxwidgets.org/stable/wx_wxtaskbaricon.html

所以这是关系到你的窗口管理器,而不是编程wxWidgets的。 wxTaskbarIcon在wxMSW下是唯一可靠的,不知道mac。 最好是避免它,如果你想真正的XPlatform应用程序。

6

对于Ubuntu Unity桌面环境(即Ubuntu 11.04或11.10),您需要将应用程序“白名单”。

从命令行使用'gsettings'应用程序有多种不同的方法。

我不得不这样做,让Skype等程序再次显示在系统托盘中,而不仅仅是我自己的使用wxPython的自定义应用程序。

+3

对于13.04 [白名单已过时](http://www.webupd8.org/2013/02/unity-notification-area -systray.html)。现在的解决方案是什么? – fatuhoku

+0

我已经从这篇文章中删除了一个链接,因为它需要登录(据推测它本来不是)。 – halfer

0

如果您正在制作新的应用程序,请考虑使用更新的libappindicator库 - 它是Ubuntu的继任者,它至少应与GNOME 2.x兼容。 (我不知道GNOME 3或KDE是否支持在任何地方显示libappindicator通知。)