Poner cualquier gtk.Widget dentro de un gtk.Menu funciona, de alguna manera, colocando un gtk.MenuItem vacío primero. No parece ser confiable, pero básicamente funciona. Con un appindicator.Indicator, no funciona. La entrada solo permanece vacía. Incluso si configura el elemento secundario [border_size] en 32, por ejemplo.
El único widget que funciona es un gtk.Label (más el MenuItem, ImageMenuItem, etc., por supuesto).
Ahora el menú Me tiene un gtk. Ingrese, por lo que seguramente debe ser posible hacerlo correctamente. ¿Cómo lo hago?
Aquí hay un código de ejemplo para explicar de qué estoy hablando:
self.item = gtk.MenuItem()
self.item.add(gtk.Label("hello world!"))
self.menu.append(self.item)
El código anterior funciona, sin embargo, esto no:
self.item = gtk.MenuItem()
self.item.add(gtk.Entry())
self.menu.append(self.item)
Donde self.menu es un appindicator.Indicator, si se tratara de un gtk.Menu, al menos se mostrará la entrada.
Aquí hay un código de trabajo:
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()