将任何gtk.Widget放在gtk.Menu内,某种程度上是通过首先将一个空的gtk.MenuItem放入而起作用的。它似乎并不可靠-但它基本上可以工作。使用appindicator.Indicator无效。条目保持为空。例如,即使将child [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,则将至少显示Entry。
这是一些工作代码:
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()
作为@MarcoCeppi提醒我,是的-这是不应该工作。我只是希望和梦想,也许可以。由于“我的菜单”功能看似相似。
—
Stefano Palazzo
我很确定我菜单使用libido(指示器显示对象)来做到这一点。请参阅:launchpad.net/ido特别是idoentrymenuitem.c(bazaar.launchpad.net/~canonical-dx-team/ido/trunk/annotate/…)。不幸的是,我认为没有python绑定。您可能要在ayatana-dev电子邮件列表中询问。
—
andrewsomething 2010年
您是否知道如何执行此操作?我正面临着同样的问题。谢谢。
—
本杰明·