问题描述
我正在尝试尝试开发一些简单的指标,例如numlock /capslock和brigthness等。如何在python中创建指标?是否有任何教程可以指导我编写第一个指示符(例如快速入门的应用程序)?有没有像快速模板一样容易启动的解决方案?
最佳办法
您可以在此处找到编写应用指标的页面:
也可以看看:
在该页面上,您会找到指向Python和API文档中的示例的链接。 “快速”中的ubuntu-application模板应包含有关使用指示符的示例。祝你好运!
次佳办法
我认为@fossfreedom提到的Writing indicators with Python, GIR and GTK3涵盖了如何为Unity创建指标。 (读第1篇)
我正在使用Ubuntu 14.04,Quickly 12.08.1。这是从Quickly模板构建完整工作示例的演示。
-
OP仅需要指示器(而不是完整的GUI应用程序),因此让我们从ubuntu-cli快速模板开始:
quickly create ubuntu-cli indicator-demo
它可能会在此模板中引发针对未发布的错误修复程序(bug#1064110)的错误消息:
Creating project directory indicator-demo Creating bzr repository and committing Launching your newly created project! Traceback (most recent call last): ... OSError: [Errno 13] Permission denied ERROR: create command failed Aborting
修复权限
cd indicator-demo/ chmod +x bin/indicator-demo
测试
$ quickly run I'm launched and my args are:
-
Ubuntu Wiki: Application Indicators有一个很好的PYGI示例。集成起来应该很容易。打开进行编辑:
quickly edit
-
修改
__init__.py
,添加需要的模块导入:from gi.repository import Gtk from gi.repository import AppIndicator3 as appindicator
-
在
main()
函数中,介于:print _("I'm launched and my args are: %s") % (" ".join(args)) logging.debug(_('end of prog'))
添加:
ind = appindicator.Indicator.new_with_path ( _("Indicator demo for Quickly"), "indicator-demo-icon-normal", appindicator.IndicatorCategory.APPLICATION_STATUS, indicator_democonfig.get_data_path()) ind.set_status (appindicator.IndicatorStatus.ACTIVE) ind.set_attention_icon ("indicator-demo-icon-attention") # create a menu menu = Gtk.Menu() # create one item menu_items = Gtk.MenuItem(_("Quit")) menu.append(menu_items) # this is where you would connect your menu item up with a function: menu_items.connect("activate", Gtk.main_quit ) # show the item menu_items.show() ind.set_menu(menu) Gtk.main()
-
-
将图标添加到新创建的数据文件夹中:
mkdir data
我从已安装的软件包中复制了一些图标,仅作为示例:
cp /usr/share/icons/ubuntu-mono-dark/status/22/indicator-messages.svg data/indicator-demo-icon-normal.svg cp /usr/share/icons/ubuntu-mono-dark/status/22/indicator-messages-new.svg data/indicator-demo-icon-attention.svg
-
测试一下:
quickly run
-
创建包并发布:
quickly package quickly share --ppa your-ppa
笔记:
-
好吧,我没有更新debian软件包控制文件,但是依赖项已自动添加到生成的DEB中:
Package: indicator-demo Version: 0.1 Architecture: all Maintainer: UNKNOWN <UNKNOWN> Installed-Size: 57 Depends: python (>= 2.7), python (<< 2.8), python:any (>= 2.7.1-0ubuntu2), gir1.2-gtk-3.0, gir1.2-appindicator3-0.1 Section: python Priority: extra Description: UNKNOWN UNKNOWN
此外,软件包中还包含了先前在数据文件夹中添加的图标。
-
我之前也遇到过类似的情况How to add a keyboard modifier state applet to Unity panel?。答案包含使用libappindicator的示例/原型键盘指示器(但使用c编程语言)。 libappindicator缺少重要的功能,该功能很容易移植其他桌面指示器。图标只能从路径加载。 See Bug #812067 API needed: pixbuf icon setting support
参考:
-
libappindicator的完整API参考在
libappindicator-doc
软件包中以HTML形式提供。在/usr/share/gtk-doc/html/libappindicator/
中查找请注意,它支持在指示器图标旁边添加标签。
相关问题:
第三种办法
This链接将教您使用python + unity创建一个基本的新邮件指示器,该指示器可与GMail一起使用。这将为您提供小程序的基本结构的坚实基础,同时提供一个您可以轻松扩展的real-world(尽管是简单的)示例。它一步一步地完成了最后的脚本。 This是另一个使用Pygtk
编写的带有代码注释的python程序