গ্ল্যাড প্যালেটে কীভাবে একটি পাইগটক উইজেট যুক্ত করবেন?


8

বলুন আমি এর মতো একটি জিটিকে উইজেট তৈরি করেছি:

class AwesomeTextView (gtk.TextView):

    def set_font(self, font_description):
        self.modify_font(pango.FontDescription(font_description))

গ্লাড ইন্টারফেস বিল্ডারের প্যালেটে আমি কীভাবে আমার নতুন উইজেটটি যুক্ত করতে পারি?

এখানে চিত্র বর্ণনা লিখুন

উত্তর:


7

ঠিক আছে, এটি ধাপে ধাপে হতে চলেছে:

  • আমাদের উইজেটের নামকরণ হতে চলেছে AwesomeTextView, এতে থাকা মডিউলটি কল করা হবে awesome_text_view। এই আমাদের একমাত্র নাম প্রয়োজন।

একটি গ্লেড উইজেট দুটি অংশ, মডিউল এবং ক্যাটালগ নিয়ে গঠিত।

  1. আমরা একটি ক্যাটালগ তৈরি করি awesome_text_view.xml, এবং (মূল হিসাবে) এটিকে সংরক্ষণ করি/usr/share/glade3/catalogs/

    এটি দেখতে এটির মতো:

    <glade-catalog name="awesome_text_view"
        library="gladepython"
        domain="glade-3"
        depends="gtk+">
    
     <init-function>glade_python_init</init-function>
    
     <glade-widget-classes>
       <glade-widget-class title="Awesome TextView"
        name="AwesomeTextView"
        generic-name="awesome_text_view"/>
     </glade-widget-classes>
    
     <glade-widget-group name="python" title="Python">
       <glade-widget-class-ref name="AwesomeTextView"/>
     </glade-widget-group>
    </glade-catalog>

    এই টেমপ্লেটটি যেমন কাজ করে ততই আপনাকে অনুলিপি এবং মানিয়ে নেওয়া উচিত । :-)

  2. আমরা একটি মডিউল তৈরি করি awesome_text_view.py, এবং (আবার রুট হিসাবে) এটিকে সংরক্ষণ করি/usr/lib/glade3/modules/

    যা দেখতে দেখতে তা এখানে:

    import gobject
    import gtk
    import pango
    
    
    class AwesomeTextView (gtk.TextView):
    
        __gtype_name__ = 'AwesomeTextView'
    
        def __init__(self):
            gtk.TextView.__init__(self)
    
        def set_font(self, font_description):
            self.modify_font(pango.FontDescription(font_description))

    এটি এখন গ্লেডে প্রদর্শিত হয়েছে এবং আপনি এটি আপনার অ্যাপ্লিকেশনটিতে যুক্ত করতে পারেন।

  3. অবশেষে, আপনার কেবল দরকার

        export PYTHONPATH="$PYTHONPATH:/usr/lib/glade3/modules/"

এটাই!

আপনার উইজেটটি কীভাবে ব্যবহার করবেন তা দেখানোর জন্য এখানে একটি ছোট্ট পরীক্ষা অ্যাপ রয়েছে:

import gtk
import awesome_text_view

class App (object):

    builder = gtk.Builder()

    def __init__(self):
        self.builder.add_from_file("test.glade")
        self.builder.connect_signals(self)
        self.builder.get_object("awesome_text_view1").set_font("mono")
        gtk.main()

    def on_window1_destroy(self, widget):
        gtk.main_quit()


App()

সুতরাং অনুশীলনে, আপনার কোডের সাহায্যে কাস্টম উইজেটটি সহজেই বিতরণ করার কোনও উপায় নেই এবং অবদানকারীরা তাদের সিস্টেমে ম্যানুয়ালি এটি ইনস্টল না করেই এটিকে গ্ল্যাডে যুক্ত করতে দিন, আমি বুঝতে পারি। গ্লেড দুর্দান্ত, একটি করুণা যে কাস্টম উইজেটগুলি সিস্টেমের সাহসের মধ্যে না গিয়ে যোগ করা যায় না। যাই হোক না কেন, সুন্দর উত্তর!
ডেভিড প্লানেলা

12.04-এ এটি আমার পক্ষে কাজ করে না। গ্ল্যাড এটি মুদ্রণ করে: (গ্ল্লেড: 25053): গ্লাডুআই-সতর্কতা **: বাহ্যিক গ্রন্থাগার 'গ্ল্যাডিপথন' লোড করতে ব্যর্থ হয়েছে
ব্যবহারকারী 1477

1

আপনার উইজেটগুলির জন্য আপনার একটি ক্যাটালগ তৈরি করতে হবে, এই ফোল্ডারটি দেখুন: /usr/share/glade3/catalogs/এবং আপনি দেখতে পাবেনgnome.xml , একটি উদাহরণ দেখুন।

জিনোম ডকুমেন্টেশনও দেখুন:

http://developer.gnome.org/gladeui/stable/catalogintro.html


না কাজ :-( মনে হচ্ছে যে ডকুমেন্টেশন কেবল ভুল, আমি আমার প্রশ্নের আপডেট করব এছাড়াও, আপনি বোঝাতে চেয়েছেন। gtk+.xml, অথবা আমি শুধু অনুপস্থিত করছি gnome.xmlকোনো কারণে?
স্টেফানো মধ্যে Palazzo

আপনাকে নিজের এক্সএমএল ফাইল তৈরি করতে হবে, বিদ্যমান ফাইলটি সংশোধন করতে হবে না।
মার্টিন ওভেনস-ডক্টরমো

আমি বুঝতে পেরেছিলাম যে, আমার কাছে gnome.xML নেই, এবং আমি ভাবছিলাম যে এটি কোনও সমস্যার সূচক হতে পারে কিনা। আপনার পোস্ট করা লিঙ্কের নির্দেশাবলী যে কোনও ক্ষেত্রেই ভুল, এখনও এটির উপর কাজ করে :-)
স্টেফানো প্যালাজো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.