首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将任意gtk.Widget放入appindicator.Indicator中

将任意gtk.Widget放入appindicator.Indicator中
EN

Ask Ubuntu用户
提问于 2010-12-06 14:25:47
回答 2查看 3.6K关注 0票数 19

在某种程度上,将任何gtk.Widget放入一个gtk.Menu中都是可行的,首先将一个空的gtk.MenuItem放入其中。它似乎不可靠-但它基本上是有效的。对于appindicator.Indicator,它不起作用。入口是空的。例如,即使您将子边框_大小设置为32。

唯一起作用的小部件是gtk.Label (当然还有MenuItem、ImageMenuItem等等)。

现在Me菜单中已经有了一个gtk.Entry,所以肯定有可能正确地做到这一点。我该怎么做呢?

下面是一些示例代码来解释我正在讨论的内容:

代码语言:javascript
复制
    self.item = gtk.MenuItem()
    self.item.add(gtk.Label("hello world!"))
    self.menu.append(self.item)

以上代码工作正常,但这并不是:

代码语言:javascript
复制
    self.item = gtk.MenuItem()
    self.item.add(gtk.Entry())
    self.menu.append(self.item)

如果self.menu是appindicator.Indicator,如果它是gtk.Menu,则至少会显示条目。

以下是一些工作代码:

代码语言:javascript
复制
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()
EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2010-12-06 14:46:50

Application菜单支持基于D总线菜单,它们只支持基本的菜单功能,而不是像任意小部件这样更奇特的功能。

支持这些功能的一个重要障碍是,应用程序指示符菜单是由一个不同的进程(应用程序指示符进程)呈现的,因此您的程序无法直接在其上绘制任何内容。要克服这一问题,要么需要在D总线菜单中支持类似X嵌入的内容,要么就需要允许所有的GTK在D总线上工作。

票数 8
EN

Ask Ubuntu用户

发布于 2016-04-24 00:15:55

Ubuntu中的声音指示器有音量滑块,我想知道这是怎么可能的。在查看代码之后,似乎存在GtkMenus,它可以通过dbus同时填充:https://developer.ubuntu.com/api/devel/ubuntu-12.04/c/dbusmenugtk/index.html

但我不知道怎么用。想要写一个声音指示器,在那里我可以控制每个应用程序的音量,就像pavucontrol可以做到的那样。

票数 3
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/16431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档