Как написать Appindicators в python?

22

Я ищу, чтобы попытаться разработать некоторые простые индикаторы, для numlock / caplock и brigthness, и т. д. Как бы я начал создавать индикаторы в python? Есть ли какие-либо учебники, которые меня могут написать, написав мой первый appindicator (например, для приложений быстро)? Любые простые решения для запуска как быстрые шаблоны?

    
задан DoGoDo 11.11.2012 в 21:49
источник

3 ответа

13

Здесь вы можете найти страницу для показа показателей приложения:

См. также:

На этой странице вы найдете ссылки на примеры в Python и документацию API. Шаблон приложения ubuntu в Quickly должен иметь примеры использования appindicators. Удачи!

    
ответ дан Jorge Castro 11.11.2012 в 21:57
источник
7

Я думаю, Запись индикаторов с Python, GIR и GTK3 , как упоминается @fossfreedom, описывает, как создавать индикаторы для Unity. (Прочтите, что 1-й)

Я использую Ubuntu 14.04, быстро 12.08.1. Это демонстрация для полного рабочего примера сборки из шаблона Quickly.

  1. OP хочет только индикатор (не полный GUI-приложение), так что давайте начнем с шаблона Quickbotu-cli Quickly:

    quickly create ubuntu-cli indicator-demo
    

    В этом шаблоне может появиться сообщение об ошибке для неизданного исправления ошибок ( ошибка # 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. Существует хороший PYGI пример из Ubuntu Wiki: индикаторы приложений . Его легко интегрировать.

    Открыть для редактирования:

    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 package, но зависимости были добавлены автоматически в сгенерированный 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. Я столкнулся с аналогичным случаем раньше, Как добавить апплет состояния модификатора клавиатуры в панель Unity? . Ответ содержит пример / индикатор клавиатуры прототипа с использованием libappindicator (но на языке программирования c).

    В libappindicator отсутствует важная функция, которая упрощает использование портов другими индикаторами рабочих столов. Значок может быть загружен только с пути. См. Ошибка # 812067 Необходимый API: поддержка настроек значка pixbuf

Литература:

  • Полная ссылка API для libappindicator доступна как HTML в пакете libappindicator-doc . Посмотрите в /usr/share/gtk-doc/html/libappindicator/

    Обратите внимание, что он поддерживает добавление метки рядом с значком индикатора.

  • Ubuntu Wiki: индикаторы приложений
  • Ubuntu Wiki: быстро

Вопросы, относящиеся:

  • Написание индикаторов с Python, GIR и GTK3
  • Как создать индикаторы Unity?
ответ дан user.dz 28.06.2014 в 14:59
3

Эта ссылка научит вас создавать базовый новый индикатор почты в python + единство, которое работает с GMail. Это даст вам прочную основу в базовой структуре апплета, обеспечивая при этом реальный (хотя и упрощенный) пример, который вы можете легко расширить. Он проходит финальный сценарий по частям.
Это это еще одна программа python с комментариями в коде, сделанная с использованием Pygtk

    
ответ дан Prinz 28.06.2014 в 10:35