Як написати Appindicators в python?


22

Я хочу спробувати розробити деякі прості показники, для numlock / caplock та brigthness тощо. Як би я пішов про створення індикаторів у python? Чи є підручники, які розглядають мою написання мого першого додатка (як, наприклад, для швидких програм)? Будь-які прості рішення для запуску швидких шаблонів?


Особливо додатки для pyqt5 або pygi та python3 (які також працюватимуть і поза єдністю).
Матео

Відповіді:


12

Сторінку написання індикаторів програм ви можете знайти тут:

Дивись також:

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


Дякую! Я сподівався на більш покроковий підручник для своєї першої спроби, але я зроблю те, що є. Я зараз залишатиму це питання відкритим, якщо хтось знає про якісь інші навчальні посібники.
DoGoDo

Ви знайдете підручник для початку роботи на developer.ubuntu.com/get-started - ознайомтеся з розділом ресурсів і для отримання більшого вмісту! developer.ubuntu.com/resources/app-developer-cookbook/unity
Девід Планелла

Дякую, @DavidPlanella я переглянув цей підручник, щоб розпочати роботу зі звичайними програмами, але він навіть не згадує показники. Іншого посилання також не має.
DoGoDo

Що ви тут не розумієте на прикладі? Це простий, простий, працюючий приклад (взято за посиланням у відповідь) developer.ubuntu.com/resources/technologies/…
Тимо

2
Подібне чи те саме питання тут - askubuntu.com/questions/108035/…
fossfreedom

7

Я думаю, що показник запису з Python, GIR та GTK3 , як згадував @fossfreedom, висвітлює, як створюються показники для Unity. (Прочитайте перше)

Я використовую Ubuntu 14.04, швидко 12.08.1. Це демонстрація повного робочого прикладу побудови з шаблону «Швидко».

  1. OP хоче просто індикатор (не повний додаток GUI), тож давайте почнемо з шаблону ubuntu-cli Швидко:

    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, але залежності додано автоматично до створеного 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: Швидко

Пов’язані запитання:


3

Це посилання навчить вас створювати базовий новий поштовий індикатор у python + Единство, який працює з GMail. Це дасть вам ґрунтовну основу основної структури аплету, надаючи приклад із реального (хоча й спрощеного) прикладу, який ви можете легко розширити. Це проходить остаточний сценарій детально.
Це ще одна програма python з коментарями в коді, зроблена за допомогою Pygtk

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.