Помещение любого gtk. Виджет в gtk. Работы меню, несколько, путем помещения пустого gtk. MenuItem в сначала. Это, кажется, не надежно - но это в основном работает. С appindicator. Индикатор, это не работает. Запись просто остается пустой. Даже если Вы устанавливаете ребенка [border_size] на 32, например.
Единственный виджет, который работы являются gtk. Маркировка (плюс MenuItem, ImageMenuItem и так далее, конечно).
Теперь Я Меню имеет gtk. Запись в нем, таким образом, должно, конечно, быть возможно сделать это Правильно. Как я делаю это?
Вот некоторый пример кода для объяснения, о чем я иду:
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. Индикатор, если это был gtk. Меню, Запись была бы, по крайней мере, отображена.
Вот некоторый рабочий код:
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()
Поддержка меню Application Indicator основана на меню D-Bus, которые ограничены в том, что они поддерживают - они только поддерживают функциональность основного меню, не более экзотические вещи, такие как произвольные виджеты.
Один значительный контрольно-пропускной пункт им, когда-либо поддержка таких вещей является тем, что меню индикатора приложения представляется другим процессом, процессом индикатора приложения, таким образом, Ваша программа не имеет доступа для прямого рисования чего-либо на нем. Преодоление этого потребовало бы или поддержки чего-то как X-Embed в меню D-Bus или разрешения всех GTK работать по D-шине.
Звуковой индикатор в Ubuntu имеет ползунки для объема, и я задался вопросом, как это возможно. После того, как взгляд в коде, которым это кажется, существует GtkMenus, который может быть переполнен через dbus между тем: https://developer.ubuntu.com/api/devel/ubuntu-12.04/c/dbusmenugtk/index.html
Но я не знаю, как использовать их. Требуемый для записи звукового индикатора, где я могу управлять объемом на приложение точно так же, как pavucontrol может сделать это.