Đặt một gtk.Widget tùy ý vào một appindicator.Theicator


18

Đặt bất kỳ gtk.Widget nào bên trong gtk.Mothy hoạt động, phần nào, bằng cách đặt gtk.MothyItem trống vào trước. Nó dường như không đáng tin cậy - nhưng về cơ bản nó hoạt động. Với một appindicator.Theicator, nó không hoạt động. Các mục chỉ để trống. Ngay cả khi bạn đặt con [Border_size] thành 32 chẳng hạn.

Tiện ích duy nhất hoạt động là gtk.Label (cộng với MenuItem, ImageMothyItem, v.v.).

Bây giờ Menu Me đã có gtk.Entry trong đó, vì vậy chắc chắn phải có thể làm điều này đúng cách. Tôi phải làm nó như thế nào?

Dưới đây là một số mã ví dụ để giải thích những gì tôi đang nói về:

    self.item = gtk.MenuItem()
    self.item.add(gtk.Label("hello world!"))
    self.menu.append(self.item)

Đoạn mã trên hoạt động, tuy nhiên điều này không:

    self.item = gtk.MenuItem()
    self.item.add(gtk.Entry())
    self.menu.append(self.item)

Trong đó self.menu là một appindicator.Theicator, nếu đó là một gtk.Mothy, thì Entry ít nhất sẽ được hiển thị.

Đây là một số mã làm việc:

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()

Như @MarcoCeppi đã nhắc nhở tôi, vâng - điều này không có nghĩa là phải hoạt động. Tôi chỉ hy vọng và mơ ước, có lẽ nó có thể. Vì Menu Me làm một cái gì đó có vẻ tương tự.
Stefano Palazzo

1
Tôi khá chắc chắn rằng Menu Me sử dụng libido (Đối tượng hiển thị chỉ báo) để làm điều đó. Xem: launchpad.net/ido Đặc biệt, idoentrymenuitem.c ( bazaar.launchpad.net/~canonical-dx-team/ido/trunk/annotate/ canh ). Thật không may, tôi không nghĩ rằng có ràng buộc trăn. Bạn có thể muốn hỏi về danh sách email ayatana-dev.
andrews Something

Bạn đã tìm ra cách để làm điều này? Tôi đang đối mặt với vấn đề tương tự. Cảm ơn.
Benjamin

Câu trả lời:


7

Hỗ trợ menu Chỉ số ứng dụng dựa trên các menu D-Bus, bị giới hạn ở những gì chúng hỗ trợ - chúng chỉ hỗ trợ chức năng menu cơ bản, không phải những thứ kỳ lạ hơn như các widget tùy ý.

Một rào cản đáng kể đối với họ từng hỗ trợ những thứ như vậy là thực tế là menu chỉ báo ứng dụng được hiển thị bởi một quy trình khác, quy trình chỉ báo ứng dụng, vì vậy chương trình của bạn không có quyền truy cập trực tiếp vào bất cứ điều gì. Để khắc phục điều này sẽ yêu cầu hỗ trợ một cái gì đó như X-Embed trong menu D-Bus hoặc cho phép tất cả GTK hoạt động trên D-Bus.


2

Chỉ báo âm thanh trong Ubuntu có thanh trượt cho âm lượng và tôi tự hỏi làm thế nào điều đó là có thể. Sau khi xem mã, có vẻ như có GtkMenus có thể được điền thông qua dbus trong khi đó: https ://developer.ub Ubuntu.com/api/devel/ubfox-12.04/c/dbusmenugtk/index.html

Nhưng tôi không biết cách sử dụng chúng. Muốn viết một chỉ báo âm thanh nơi tôi có thể kiểm soát âm lượng trên mỗi ứng dụng giống như pavucontrol có thể làm điều đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.