Mettre n'importe quel gtk.Widget à l'intérieur d'un gtk.Menu fonctionne, en quelque sorte, en mettant un gtk.MenuItem vide en premier. Cela ne semble pas fiable - mais cela fonctionne essentiellement. Avec un indicateur, l'indicateur ne fonctionne pas. L'entrée reste simplement vide. Même si vous définissez l'enfant [border_size] sur 32, par exemple.
Le seul widget qui fonctionne est un gtk.Label (plus le MenuItem, ImageMenuItem et ainsi de suite bien sûr).
Maintenant, le menu Me a un gtk.Entry dedans, donc il doit sûrement être possible de le faire correctement. Comment fait-on ça?
Voici un exemple de code pour expliquer de quoi je parle:
self.item = gtk.MenuItem()
self.item.add(gtk.Label("hello world!"))
self.menu.append(self.item)
Le code ci-dessus fonctionne, mais cela ne fonctionne pas:
self.item = gtk.MenuItem()
self.item.add(gtk.Entry())
self.menu.append(self.item)
Où self.menu est un appindicator.Indicator, s'il s'agissait d'un gtk.Menu, l'entrée serait au moins affichée.
Voici un code de travail:
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()