एक मनमाने ढंग से gtk.Widget में एक appindicator.Indicator में डाल दिया


18

किसी भी gtk.Widget को एक gtk.Menu के अंदर रखना, कुछ हद तक, पहले एक खाली gtk.MenuItem लगाकर काम करता है। यह विश्वसनीय नहीं लगता - लेकिन यह मूल रूप से काम करता है। एक appindicator.Indicator के साथ, यह काम नहीं करता है। प्रवेश सिर्फ खाली रहता है। उदाहरण के लिए, भले ही आप बच्चे को [बॉर्डर_साइज़] 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 होता, तो एंट्री कम से कम प्रदर्शित होती।

यहाँ कुछ काम कोड है:

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 ने मुझे याद दिलाया, हां - यह काम करने वाला नहीं है । मैं बस उम्मीद कर रहा हूं और सपने देख रहा हूं, हो सकता है। चूंकि Me Menu कुछ ऐसा ही प्रतीत होता है।
Stefano Palazzo

1
मुझे पूरा यकीन है कि मुझे मेनू ऐसा करने के लिए कामेच्छा (संकेतक प्रदर्शन वस्तुओं) का उपयोग करता है। देखें: launchpad.net/ido विशेष रूप से, idoentrymenuitem.c ( bazaar.launchpad.net/~canonical-dx-team/ido/trunk/annotate/… )। दुर्भाग्य से, मुझे नहीं लगता कि अजगर बाँध रहे हैं। आप ayatana-dev ईमेल सूची पर पूछना चाह सकते हैं।
andrewsomething

क्या आपको पता है कि यह कैसे करना है? मैं भी ऐसी ही समस्या का सामना कर रहा हूँ। धन्यवाद।
बेंजामिन

जवाबों:


7

एप्लिकेशन संकेतक मेनू का समर्थन डी-बस मेनू पर आधारित है, जो कि वे जो समर्थन करते हैं उसमें सीमित हैं - वे केवल मूल मेनू कार्यक्षमता का समर्थन करते हैं, न कि अधिक विदेशी चीजें जैसे मनमानी विजेट।

ऐसी चीजों का समर्थन करने वाले उनके लिए एक महत्वपूर्ण अवरोधक तथ्य यह है कि एप्लिकेशन संकेतक मेनू को एक अलग प्रक्रिया, एप्लिकेशन संकेतक प्रक्रिया द्वारा प्रदान किया जाता है, इसलिए आपके प्रोग्राम को सीधे उस पर कुछ भी आकर्षित करने की पहुंच नहीं है। इस पर काबू पाने के लिए डी-बस मेनू में एक्स-एंबेड जैसे कुछ का समर्थन करने या जीटीके के सभी को डी-बस पर काम करने की अनुमति देने की आवश्यकता होगी।


2

उबंटू में ध्वनि संकेतक में वॉल्यूम के लिए स्लाइडर्स हैं और मुझे आश्चर्य है कि यह कैसे संभव है। कोड में एक नज़र के बाद ऐसा लगता है कि GtkMenus हैं, जो इस बीच dbus से भरे जा सकते हैं: https://developer.ubuntu.com/api/devel/ubuntu-12.04/c/dbusmenugtk/index.html

लेकिन मुझे नहीं पता कि उन्हें कैसे इस्तेमाल करना है। एक ध्वनि संकेतक लिखना चाहता था जहां मैं प्रति-ऐप की मात्रा को नियंत्रित कर सकता हूं जैसे कि पावुकंट्रोल कर सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.