Помещение любого gtk.Widget в gtk.Menu работает, в некотором смысле, сначала помещая пустой gtk.MenuItem. Это не кажется надежным - но в основном это работает. С appindicator.Indicator это не работает. Запись просто остается пустой. Даже если вы установите для дочернего элемента [border_size] значение 32, например.
Единственный работающий виджет - это gtk.Label (плюс, конечно, MenuItem, ImageMenuItem и так далее).
Теперь в Me Me есть gtk.Entry, поэтому должно быть возможно сделать это правильно. Как это сделать?
Вот пример кода, чтобы объяснить, о чем я:
self.item = gtk.MenuItem()
self.item.add(gtk.Label("hello world!"))
self.menu.append(self.item)
Приведенный выше код работает, однако это не так:
self.item = gtk.MenuItem()
self.item.add(gtk.Entry())
self.menu.append(self.item)
Где self.menu является appindicator.Indicator, если бы это было gtk.Menu, запись будет отображаться по крайней мере.
Вот некоторый рабочий код:
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()