当前位置: 首页>>技术教程>>正文


在python中,如何编写Appindicators?

, ,

问题描述

我正在尝试尝试开发一些简单的指标,例如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模板构建完整工作示例的演示。

  1. 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:
    
  2. 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()
      
  3. 将图标添加到新创建的数据文件夹中:

    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
    
  4. 测试一下:

    quickly run
    
  5. 创建包并发布:

    quickly package
    quickly share --ppa your-ppa
    

笔记:

  1. 好吧,我没有更新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
    

    此外,软件包中还包含了先前在数据文件夹中添加的图标。

  2. 我之前也遇到过类似的情况How to add a keyboard modifier state applet to Unity panel?。答案包含使用libappindicator的示例/原型键盘指示器(但使用c编程语言)。 libappindicator缺少重要的功能,该功能很容易移植其他桌面指示器。图标只能从路径加载。 See Bug #812067 API needed: pixbuf icon setting support

参考:

相关问题:

第三种办法

This链接将教您使用python + unity创建一个基本的新邮件指示器,该指示器可与GMail一起使用。这将为您提供小程序的基本结构的坚实基础,同时提供一个您可以轻松扩展的real-world(尽管是简单的)示例。它一步一步地完成了最后的脚本。 This是另一个使用Pygtk编写的带有代码注释的python程序

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11824.html,未经允许,请勿转载。