Tak*_*kat 23 applet indicator python development application-development
有问题的应用程序执行一些操作(此处将音频连接到网络流)并在这些操作成功时最小化运行。因此需要一个状态图标来显示连接状态(例如已连接/已断开连接)。仅当单击该图标时,应用程序窗口才会打开以访问更多选项。
使用 Python 2.6 和 pyGtk 我通过使用gtk_status_icon方便地实现了这一点。我特意编写了在尽可能多的发行版上运行的应用程序,包括各种 Ubuntu 版本。只有在用户安装它们之后,我才小心使用可能的依赖项。
但是现在我听说未来的 Ubuntu 版本将不再支持 gtk_status_icon。要求开发人员改用应用程序指示器。什么是最佳实践以确保:
如果指标小程序未运行,应用程序指标回退机制到 gtk_status_icon 将不起作用。如果没有要从中导入的appindicator模块,Python 解释器将不会运行。我是否需要为不同的发行版开发不同的版本,还是有更好的方法来解决这个问题。
除了Ubuntu Wiki 中给出的示例之外,我在哪里可以找到有关如何使用 ApplicationIndicator 的文档?提供了哪些命令来检查指标小程序是否正在运行以避免为 Ubuntu 与非 Ubuntu 发行版编写不同的源代码?
Ted*_*uld 16
我认为这里的需求实际上更多地确定了 python-appindicator 库的存在。如果存在,它将支持您需要的所有回退情况。它将适当地处理 XFCE、KDE 和较旧的 GNOME。 在这个答案中如何做到这一点的好例子。
appindicator 库将使用 DBus 来检查应用程序指示器渲染过程是否可用。这将是 Unity 的情况,或者如果指标小程序正在运行。如果可用,它将使用它,否则,它将回退到使用具有相同菜单的 GtkStatusIcon。
不幸的是,如果您想处理库不可用的情况,我相信您必须保留两个代码路径。不过,我们很乐意帮助在其他发行版中获得该库:)
Nat*_*man 10
我有一个在StackApplet 中运行良好的优秀解决方案- 我创建了一个功能等效的appindicator模块版本,gtk.StatusIcon当真正的模块不存在时,该版本在内部使用以提供相同的功能。
使用它很简单:
appindicator_replacement.py将以下内容添加到您的应用程序中:
try:
import appindicator
except ImportError:
import appindicator_replacement as appindicator
Run Code Online (Sandbox Code Playgroud)就是这样!现在,无论是否支持 AppIndicators,您的应用程序都将完美运行。假设您没有任何其他特定于平台的代码,它甚至可以在 Windows 上运行。
注意:该文件是在 MIT 许可下发布的 - 所以你几乎可以将它用于任何事情。
小智 9
您将需要为两者编写代码。您可以使用类似于以下内容的方法检测 Python 代码中 appindicator 的存在:
have_appindicator = True
try:
import appindicator
except:
have_appindicator = False
Run Code Online (Sandbox Code Playgroud)
从那里,使用 have_appindicator 来决定您应该使用 appindicator 代码还是 gtk_status_icon 代码。
不幸的是,这也意味着您需要同时拥有 Ubuntu 和另一个环境来进行测试。
| 归档时间: |
|
| 查看次数: |
5034 次 |
| 最近记录: |