Как добавить pygtk Виджет к палитре Glade?

Скажите, что я создал gtk Виджет как это:

class AwesomeTextView (gtk.TextView):

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

Как я могу добавить свой новый виджет к палитре в Разработчике Интерфейса Поляны?

enter image description here

8
задан 10 October 2011 в 21:17

2 ответа

Хорошо, это будет пошаговым:

  • Наш виджет будет именованным 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()
7
ответ дан 10 October 2011 в 21:17

Вам нужно сделать каталог для ваших виджетов, посмотрите эту папку: /usr/share/glade3/catalogs/, и вы увидите gnome.xml, посмотрите пример.

См. Также документацию гнома:

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

0
ответ дан 10 October 2011 в 21:17

Другие вопросы по тегам:

Похожие вопросы: