Bir appindicator'a keyfi bir gtk.Widget koymak.


18

Bir gtk.Menu'nun içine herhangi bir gtk.Widget koymak, önce boş bir gtk.MenuItem koyarak biraz çalışır. Güvenilir görünmüyor - ama temelde çalışıyor. Bir appindicator.Indicator ile çalışmaz. Giriş boş kalır. Örneğin [border_size] öğesini 32 olarak ayarlasanız bile.

Çalışan tek widget bir gtk.Label (artı tabii ki MenuItem, ImageMenuItem ve benzeri).

Şimdi Me Menüsü bir gtk.Entry var, bu yüzden bunu düzgün yapmak kesinlikle mümkün olmalıdır. Nasıl yaparım?

İşte ne olduğumu açıklamak için bazı örnek kod:

    self.item = gtk.MenuItem()
    self.item.add(gtk.Label("hello world!"))
    self.menu.append(self.item)

Yukarıdaki kod çalışır, ancak bu işe yaramaz:

    self.item = gtk.MenuItem()
    self.item.add(gtk.Entry())
    self.menu.append(self.item)

Self.menu bir appindicator ise. Gösterge, bir gtk.Menu olsaydı, Giriş en azından görüntülenirdi.

İşte bazı çalışma kodu:

import gtk
import appindicator

class AppIndicator (object):

    def __init__(self):
        self.ind = appindicator.Indicator("hello world client",
            "distributor-logo", appindicator.CATEGORY_APPLICATION_STATUS)
        self.ind.set_status (appindicator.STATUS_ACTIVE)
        self.menu = gtk.Menu()
        item = gtk.MenuItem()

        item.add(gtk.Label("hello world"))
        # item.add(gtk.Entry())

        self.menu.append(item)
        self.menu.show_all()
        self.ind.set_menu(self.menu)


indicator = AppIndicator()
gtk.main()

@MarcoCeppi'nin bana hatırlattığı gibi, evet - bunun çalışması gerekmiyor . Sadece umuyorum ve hayal ediyorum, belki olabilir. Ben Menü beri benzer bir şey yapar.
Stefano Palazzo

1
Ben Me menü bunu yapmak için libido (Gösterge Görüntüleme Nesneleri) kullanır eminim. Bakınız: launchpad.net/ido Özellikle idoentrymenuitem.c ( bazaar.launchpad.net/~canonical-dx-team/ido/trunk/annotate/… ). Ne yazık ki, python bağları olduğunu sanmıyorum. Ayatana-dev e-posta listesine sormak isteyebilirsiniz.
22:22

Bunu nasıl yapacağınızı öğrendiniz mi? Ben de aynı problemle karşı karşıyayım. Teşekkürler.
Benjamin

Yanıtlar:


7

Uygulama Göstergesi menü desteği, destekledikleri öğelerle sınırlı olan D-Bus menülerine dayanır - yalnızca temel menü işlevlerini destekler, rastgele widget'lar gibi daha egzotik şeyleri desteklemez.

Bu tür şeyleri destekleyen onlara önemli bir barikat, uygulama göstergesi menüsünün farklı bir işlem, uygulama göstergesi işlemi tarafından oluşturulmasıdır, bu nedenle programınızın üzerine doğrudan bir şey çizme erişimi yoktur. Bunun üstesinden gelmek için D-Bus menülerinde X-Embed gibi bir şeyin desteklenmesi veya tüm GTK'nın D-Bus üzerinde çalışmasına izin verilmesi gerekir.


2

Ubuntu'daki ses göstergesinin ses için kaydırıcıları var ve bunun nasıl mümkün olduğunu merak ettim. Kodlara baktıktan sonra bu arada dbus ile doldurulabilen GtkMenus var gibi görünüyor: https://developer.ubuntu.com/api/devel/ubuntu-12.04/c/dbusmenugtk/index.html

Ama onları nasıl kullanacağımı bilmiyorum. Tıpkı pavucontrol'ün yapabildiği gibi uygulama başına ses seviyesini kontrol edebileceğim bir ses göstergesi yazmak istedim.

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.