একটি নির্বিচারে gtk.Widget একটি appindicator.Indicator মধ্যে লাগানো Put


18

কোনও gtk.Widget একটি gtk.Menu এর ভিতরে রেখে কিছুটা খালি gtk.MenuItem প্রথমে রেখে কাজ করে। এটি নির্ভরযোগ্য বলে মনে হচ্ছে না - তবে এটি মূলত কাজ করে। একটি appindicator.Indicator সহ, এটি কাজ করে না। এন্ট্রিটি খালি থাকে। এমনকি আপনি উদাহরণস্বরূপ শিশুটিকে [সীমানা_ আকার] 32 এ সেট করেছেন।

একমাত্র উইজেট যা কাজ করে তা হ'ল একটি gtk.Label (প্লাস মেনুআইটেম, ইমেজমেনু আইটেম এবং অবশ্যই)।

এখন আমি মেনু একটি gtk পেয়েছে। এন্ট্রি এতে, তাই অবশ্যই এটি যথাযথভাবে করা সম্ভব হবে। আমি এটা কিভাবে করব?

আমি যা করছি তার ব্যাখ্যা দেওয়ার জন্য এখানে কয়েকটি উদাহরণ কোড দেওয়া হয়েছে:

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

@ মারকোচিপি যেমন আমাকে মনে করিয়ে দিয়েছিল, হ্যাঁ - এটি কাজ করার কথা নয় । আমি কেবল আশা এবং স্বপ্ন দেখছি, সম্ভবত এটি পারে। যেহেতু মি মেনু আপাতদৃষ্টিতে অনুরূপ কিছু করে।
স্টেফানো প্যালাজো

1
আমি নিশ্চিত যে মে মেনু এটি করার জন্য লিবিডো (সূচক প্রদর্শনের অবজেক্টস) ব্যবহার করে। দেখুন: launchpad.net/ido বিশেষ করে, idoentrymenuitem.c (ইন bazaar.launchpad.net/~canonical-dx-team/ido/trunk/annotate/... )। দুর্ভাগ্যক্রমে, আমি মনে করি না পাইথন বাইন্ডিং রয়েছে। আপনি আয়তন-দেব ইমেল তালিকায় জানতে চাইতে পারেন।
অ্যান্ড্রুসোমথিং

এটি কীভাবে করবেন তা আপনি খুঁজে পেয়েছেন? আমি একই সমস্যা সম্মুখীন হচ্ছি। ধন্যবাদ।
বেনিয়ামিন

উত্তর:


7

অ্যাপ্লিকেশন ইন্ডিকেটর মেনু সমর্থন ডি-বাস মেনুগুলির উপর ভিত্তি করে, যা তারা সমর্থন করে তা সীমাবদ্ধ - তারা কেবল বেসিক মেনু কার্যকারিতা সমর্থন করে, স্বেচ্ছাসেবী উইজেটের মতো আরও বহিরাগত জিনিস নয়।

এ জাতীয় জিনিসগুলিকে সমর্থন করার জন্য তাদের কাছে একটি গুরুত্বপূর্ণ বাধা অবলম্বন হ'ল অ্যাপ্লিকেশন সূচক মেনুটি একটি ভিন্ন প্রক্রিয়া দ্বারা প্রয়োগ করা হয়, অ্যাপ্লিকেশন সূচক প্রক্রিয়া, সুতরাং আপনার প্রোগ্রামটিতে সরাসরি কিছু আঁকতে অ্যাক্সেস নেই। এটি অতিক্রম করার জন্য হয় হয় ডি-বাস মেনুতে এক্স-এম্বেডের মতো কিছু সমর্থন করা বা সমস্ত জিটিকেকে ডি-বাসের মাধ্যমে কাজ করার অনুমতি দেওয়া দরকার।


2

উবুন্টুতে সাউন্ড ইন্ডিকেটরটিতে ভলিউমের স্লাইডার রয়েছে এবং আমি কীভাবে এটি সম্ভব তা ভাবলাম। কোডটি একবার দেখার পরে মনে হচ্ছে GtkMenus রয়েছে যা এদিকে ডিবিাসের মাধ্যমে পূরণ করা যেতে পারে: https://developer.ubuntu.com/api/devel/ubuntu-12.04/c/dbusmenugtk/index.html

তবে এগুলি কীভাবে ব্যবহার করতে হয় তা আমি জানি না। সাউন্ড ইন্ডিকেটর লিখতে চেয়েছিলাম যেখানে আমি প্রতি অ্যাপ্লিকেশনের ভলিউম যেমন প্যাভুকন্ট্রোল করতে পারি তেমন নিয়ন্ত্রণ করতে পারি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.