Mettere qualsiasi gtk.Widget all'interno di un gtk.Menu funziona, in qualche modo, inserendo prima un gtk.MenuItem vuoto. Non sembra essere affidabile, ma sostanzialmente funziona. Con un appindicator.Indicator, non funziona. La voce rimane vuota. Anche se imposti il child [border_size] su 32, per esempio.
L'unico widget che funziona è gtk.Label (oltre a MenuItem, ImageMenuItem e così via ovviamente).
Ora il menu Me ha un gtk. Entra in esso, quindi deve sicuramente essere possibile farlo correttamente. Come lo faccio?
Ecco alcuni esempi di codice per spiegare di cosa mi occupo:
self.item = gtk.MenuItem()
self.item.add(gtk.Label("hello world!"))
self.menu.append(self.item)
Il codice sopra funziona, ma questo non funziona:
self.item = gtk.MenuItem()
self.item.add(gtk.Entry())
self.menu.append(self.item)
Dove self.menu è un appindicator.Indicator, se fosse un gtk.Menu, la voce sarebbe almeno visualizzata.
Ecco un po 'di codice funzionante:
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()