Як написати 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.