Appindicators python'da nasıl yazılır?


22

Numlock / capslock ve brigthness vb. İçin bazı basit göstergeler denemek ve geliştirmek istiyorum. Python'da göstergeler oluşturma konusunda nasıl gidebilirim? İlk appindicator'ımı yazarken bana yol gösterecek herhangi bir ders var mı (hızlıca gelen uygulamalar için olduğu gibi)? Hızlı şablonlar gibi başlamak için herhangi bir kolay çözümler?


Özellikle pyqt5 veya pygi ve python3 için apinatörler (aynı zamanda birlik dışında da çalışacak).
Mateo

Yanıtlar:


12

Uygulama göstergeleri yazma sayfasını burada bulabilirsiniz:

Ayrıca bakınız:

Bu sayfada Python ve API dokümantasyonundaki örneklere bağlantılar bulacaksınız. Quickly içindeki ubuntu-uygulama şablonu, appindicators kullanma konusunda örnekler içermelidir. İyi şanslar!


Teşekkür ederim! İlk denemem için adım adım daha öğretici olmayı umuyordum, ama olanı yapacağım. Birisi diğer derslerden haberdar olması durumunda soruyu şimdilik açık tutacağım.
DoGoDo

Geliştirici.ubuntu.com/ get-started adresinde çalışmaya başlamanızı sağlayacak bir eğitim bulacaksınız - daha fazla içerik için kaynaklar bölümüne de bakın! developer.ubuntu.com/resources/app-developer-cookbook/unity
David Planella

Teşekkürler, @DavidPlanella Bu öğreticinin normal programlara başlamasını izledim, ancak göstergelerden bile bahsetmiyor. Diğer link de yok.
DoGoDo 11:12

Buradaki örnek hakkında ne anlamıyorsunuz? Bu basit ve basit bir çalışma örneğidir (cevaptaki bağlantıdan alınmıştır) developer.ubuntu.com/resources/technologies/…
Timo

2
Burada benzer veya aynı soru - askubuntu.com/questions/108035/…
fossfreedom

7

Ben düşünüyorum Python, GIR ve GTK3 ile göstergelerini Yazma @fossfreedom tarafından belirtildiği gibi, kapaklar nasıl Birlik göstergeler oluşturun. (Oku bunu 1.)

Ubuntu 14.04, Çabuk 12.08.1 kullanıyorum. Bu, Quickly şablonundan derlenen eksiksiz çalışan bir örnek için demo.

  1. OP sadece gösterge istiyor (GUI uygulaması tamamlanmadı) bu yüzden ubuntu-cli Quickly template ile başlayalım:

    quickly create ubuntu-cli indicator-demo

    Bu şablondaki yayınlanmamış hata düzeltmesi ( hata # 1064110 ) için bir hata mesajı oluşturabilir:

    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

    Düzeltme izinleri

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

    Ölçek

    $ quickly run
    I'm launched and my args are:
  2. Uygulama Göstergeleri: Ubuntu Wiki'den güzel bir PYGI örneği var . Entegrasyonu kolay olmalı.

    Düzenlemeye aç:

    quickly edit
    • Değiştir __init__.py, ihtiyaç modülleri ithalat ekle:

      from gi.repository import Gtk
      from gi.repository import AppIndicator3 as appindicator
    • İşlevde main():

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

      eklemek:

      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. Yeni oluşturulan bir veri klasörüne simgeler ekleyin:

    mkdir data

    Sadece örnek yapmak için bazı ikonları kurulu paketlerden kopyaladım:

    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. Dene:

    quickly run
  5. Paket oluşturun ve yayınlayın:

    quickly package
    quickly share --ppa your-ppa

Notlar:

  1. Eh, debian paket kontrol dosyasını güncellemedim, fakat bağımlılıklar oluşturulan DEB'ye otomatik olarak eklendi:

    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

    Ayrıca, veri klasörüne önceden eklenmiş simgeler pakete dahil edildi.

  2. Daha önce benzer bir durumla karşılaştım, Birlik paneline klavye değiştirici durum uygulaması nasıl eklenir? . Cevap, libappindicator (örneğin c programlama dilinde) kullanarak bir örnek / prototip klavye göstergesi içerir.

    libappindicator, diğer masaüstü göstergelerini portlara taşımayı kolaylaştıran önemli bir özelliğe sahip değildir. Simge yalnızca yoldan yüklenebilir. Gerekli Hata # 812067 API'sına bakın: pixbuf icon setting support

Referanslar:

  • Libappindicator için eksiksiz API referansı libappindicator-docpakette HTML olarak mevcuttur . Arama konumu/usr/share/gtk-doc/html/libappindicator/

    Gösterge simgesinin yanına etiket eklemeyi desteklediğine dikkat edin.

  • Ubuntu Wiki: Uygulama Göstergeleri
  • Ubuntu Wiki: Çabuk

İlgili sorular:


3

Bu bağlantı size GMail ile çalışan python + unity içerisinde temel bir yeni posta göstergesi oluşturmayı öğretecektir. Bu, kolayca uzatabileceğiniz gerçek dünyaya (basit olsa da) bir örnek sunarken, bir uygulamanın temel yapısında sağlam bir topraklama sağlayacaktır. Son senaryoyu parça parça geçiyor.
Bu kod kullanılarak yapılan açıklamalarla yapılan başka bir python programıdır. Pygtk

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.