Поміщення будь-якого gtk.Widget всередині gtk.Menu працює, дещо, додавши спочатку порожній gtk.MenuItem. Це не здається надійним - але в основному це працює. З програмою appindicator.Indicator це не працює. Запис залишається порожнім. Навіть якщо ви встановите, наприклад, дитину [border_size] на 32.
Єдиний віджет, який працює - це gtk.Label (плюс, звичайно, MenuItem, ImageMenuItem тощо).
Тепер у меню Меню є 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()