Glade 팔레트에 pygtk 위젯을 추가하는 방법은 무엇입니까? 해보십시오. class AwesomeTextView (gtk.TextView):

다음과 같이 gtk 위젯을 만들었다 고 가정 해보십시오.

class AwesomeTextView (gtk.TextView):

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

Glade Interface Builder에서 팔레트에 새 위젯을 추가하려면 어떻게해야합니까?

여기에 이미지 설명을 입력하십시오



답변

좋아, 이것은 단계적으로 될 것입니다 :

  • 우리의 위젯은으로 명명 될 것이고 AwesomeTextView, 그것의 모듈은로 불릴 것 awesome_text_view입니다. 이것들이 우리에게 필요한 유일한 이름입니다.

glade 위젯은 모듈과 카탈로그의 두 부분으로 구성됩니다.

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

    이제 Glade에 표시되며 응용 프로그램에 추가 할 수 있습니다.

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


답변

위젯에 대한 카탈로그를 작성하고이 폴더를 참조하십시오. /usr/share/glade3/catalogs/그러면 gnome.xml, 예제를 살펴보십시오.

그놈 문서도 참조하십시오 :

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


답변