在某种程度上,将任何gtk.Widget放入一个gtk.Menu中都是可行的,首先将一个空的gtk.MenuItem放入其中。它似乎不可靠-但它基本上是有效的。对于appindicator.Indicator,它不起作用。入口是空的。例如,即使您将子边框_大小设置为32。
唯一起作用的小部件是gtk.Label (当然还有MenuItem、ImageMenuItem等等)。
现在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()发布于 2010-12-06 14:46:50
Application菜单支持基于D总线菜单,它们只支持基本的菜单功能,而不是像任意小部件这样更奇特的功能。
支持这些功能的一个重要障碍是,应用程序指示符菜单是由一个不同的进程(应用程序指示符进程)呈现的,因此您的程序无法直接在其上绘制任何内容。要克服这一问题,要么需要在D总线菜单中支持类似X嵌入的内容,要么就需要允许所有的GTK在D总线上工作。
发布于 2016-04-24 00:15:55
Ubuntu中的声音指示器有音量滑块,我想知道这是怎么可能的。在查看代码之后,似乎存在GtkMenus,它可以通过dbus同时填充:https://developer.ubuntu.com/api/devel/ubuntu-12.04/c/dbusmenugtk/index.html。
但我不知道怎么用。想要写一个声音指示器,在那里我可以控制每个应用程序的音量,就像pavucontrol可以做到的那样。
https://askubuntu.com/questions/16431
复制相似问题