임의의 gtk.Widget을 appindicator에 넣는다.


18

gtk.Menu 안에 gtk.Widget을 넣는 것은 빈 gtk.MenuItem을 먼저 넣어서 작동한다. 신뢰할 수없는 것 같지만 기본적으로 작동합니다. appindicator.Indicator를 사용하면 작동하지 않습니다. 항목이 비어 있습니다. 예를 들어 child [border_size]를 32로 설정하더라도

작동하는 유일한 위젯은 gtk.Label (물론 MenuItem, ImageMenuItem 등)입니다.

이제 Me Menu에 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

1
나는 Me 메뉴가 그것을하기 위해 리비도 (인디케이터 표시 객체)를 사용한다고 확신합니다. 참조 : launchpad.net/ido 특히, idoentrymenuitem.c ( bazaar.launchpad.net/~canonical-dx-team/ido/trunk/annotate/… ). 불행히도, 나는 파이썬 바인딩이 없다고 생각합니다. ayatana-dev 이메일 목록에 문의하십시오.
andrewsomething

이 작업을 수행하는 방법을 찾았습니까? 나는 같은 문제에 직면하고있다. 감사.
Benjamin

답변:


7

응용 프로그램 표시기 메뉴 지원은 D-Bus 메뉴를 기반으로합니다. D-Bus 메뉴는 지원하는 기능이 제한되어 있습니다. 임의의 위젯과 같은 이국적인 기능이 아닌 기본 메뉴 기능 만 지원합니다.

응용 프로그램 표시기 메뉴가 다른 프로세스, 응용 프로그램 표시기 프로세스에 의해 렌더링되므로 프로그램에서 직접 무언가를 그릴 수있는 액세스 권한이 없다는 사실이 응용 프로그램 메뉴를 지원하는 중요한 장애물 중 하나입니다. 이를 극복하려면 D-Bus 메뉴에서 X-Embed와 같은 것을 지원하거나 모든 GTK가 D-Bus를 통해 작동하도록해야합니다.


2

Ubuntu의 사운드 표시기에는 볼륨에 대한 슬라이더가 있으며 이것이 가능한지 궁금합니다. 코드를 살펴본 후 dbus를 통해 채울 수있는 GtkMenus가있는 것 같습니다 : https://developer.ubuntu.com/api/devel/ubuntu-12.04/c/dbusmenugtk/index.html

그러나 나는 그것들을 사용하는 방법을 모른다. pavucontrol이 할 수있는 것처럼 앱 당 볼륨을 제어 할 수있는 사운드 표시기를 작성하고 싶었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.