Jak napisać Appindicators w Pythonie?


22

Chcę spróbować opracować kilka prostych wskaźników, dla numlock / capslock i jasności itp. Jak mógłbym zacząć tworzyć wskaźniki w pythonie? Czy są jakieś tutoriale, które przeprowadzają mnie przez proces pisania mojego pierwszego appindicatora (na przykład dla aplikacji szybko) Jakieś proste rozwiązania, takie jak szybkie szablony?


Zwłaszcza appindicators dla pyqt5 lub pygi i python3 (który będzie działał również poza jednością).
Mateo

Odpowiedzi:


12

Tutaj znajdziesz stronę do pisania wskaźników aplikacji:

Zobacz też:

Na tej stronie znajdziesz linki do przykładów w Pythonie i dokumentacji API. Szablon aplikacji ubuntu w Quickly powinien zawierać przykłady użycia aplikacji. Powodzenia!


Dziękuję Ci! Miałem nadzieję na bardziej samouczek krok po kroku dla mojej pierwszej próby, ale dam radę z tego, co jest. Na razie zachowam pytanie na wypadek, gdyby ktoś znał inne samouczki.
DoGoDo,

Znajdziesz poradnik na dobry początek na developer.ubuntu.com/get-started - sprawdź też sekcję zasobów, aby uzyskać więcej treści! developer.ubuntu.com/resources/app-developer-cookbook/unity
David Planella

Dzięki, @DavidPlanella Obejrzałem ten samouczek, aby rozpocząć pracę z normalnymi programami, ale nawet nie wspomina o wskaźnikach. Drugi link też nie.
DoGoDo,

Czego nie rozumiesz w tym przykładzie? Jest to prosty, prosty, działający przykład (wzięty z linku w odpowiedzi) developer.ubuntu.com/resources/technologies/…
Timo,

2
Podobne lub to samo pytanie tutaj - askubuntu.com/questions/108035/…
fossfreedom

7

Myślę, że pisanie wskaźników w Pythonie, GIR i GTK3 , jak wspomniano w @fossfreedom, obejmuje sposób tworzenia wskaźników dla Unity. (Przeczytaj to 1.)

Używam Ubuntu 14.04, Szybko 12.08.1. To jest wersja demonstracyjna kompletnej działającej przykładowej kompilacji z szablonu Quickly.

  1. OP chce tylko wskaźnik (niekompletna aplikacja GUI), więc zacznijmy od szablonu Ubuntu-cli Szybko:

    quickly create ubuntu-cli indicator-demo

    W tym szablonie może pojawić się komunikat o błędzie dotyczący niepublikowanej poprawki błędu ( błąd nr 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

    Napraw uprawnienia

    cd indicator-demo/
    chmod +x bin/indicator-demo

    Test

    $ quickly run
    I'm launched and my args are:
  2. Jest ładny przykład PYGI z Ubuntu Wiki: Wskaźniki aplikacji . Integracja powinna być łatwa.

    Otwórz do edycji:

    quickly edit
    • Zmodyfikuj __init__.py, dodaj import potrzebnych modułów:

      from gi.repository import Gtk
      from gi.repository import AppIndicator3 as appindicator
    • W main()funkcji pomiędzy:

      print _("I'm launched and my args are: %s") % (" ".join(args))
      logging.debug(_('end of prog'))

      Dodaj:

      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. Dodaj ikony do nowo utworzonego folderu danych:

    mkdir data

    Skopiowałem niektóre ikony z zainstalowanych pakietów, aby zrobić przykład:

    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. Sprawdź to:

    quickly run
  5. Utwórz pakiet i opublikuj go:

    quickly package
    quickly share --ppa your-ppa

Uwagi:

  1. Cóż, nie zaktualizowałem pliku kontrolnego pakietu Debiana, ale zależności zostały automatycznie dodane do wygenerowanego 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

    Również wcześniej dodane ikony w folderze danych zostały zawarte w pakiecie.

  2. Wcześniej spotkałem się z podobną sprawą: Jak dodać aplet stanu modyfikatora klawiatury do panelu Unity? . Odpowiedź zawiera przykładowy / prototypowy wskaźnik klawiatury wykorzystujący libappindicator (ale w języku programowania c).

    libappindicator nie ma ważnej funkcji, która ułatwia przenoszenie wskaźników innych komputerów. Ikona może być ładowana tylko ze ścieżki. Zobacz Bug # 812067 Potrzebny interfejs API: obsługa ustawień ikon pixbuf

Referencje:

  • Pełna dokumentacja API dla libappindicator jest dostępna w libappindicator-docpakiecie jako HTML . Zaglądać/usr/share/gtk-doc/html/libappindicator/

    Zauważ, że obsługuje dodawanie etykiety obok ikony wskaźnika.

  • Ubuntu Wiki: Wskaźniki aplikacji
  • Ubuntu Wiki: Szybko

Powiązane pytania:


3

Ten link nauczy Cię, jak utworzyć podstawowy nowy wskaźnik poczty w Pythonie + jedności, który działa z Gmailem. Zapewni to solidne uziemienie w podstawowej strukturze apletu, zapewniając jednocześnie rzeczywisty (choć uproszczony) przykład, który można łatwo rozszerzyć. Przechodzi przez ostatni scenariusz kawałek po kawałku.
Jest to kolejny program python z komentarzami w kodzie, wykonany przy użyciu Pygtk

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.