Comment append un widget pygtk à la palette Glade?

Supposons que j’ai créé un widget gtk comme celui-ci:

class AwesomeTextView (gtk.TextView): def set_font(self, font_description): self.modify_font(pango.FontDescription(font_description)) 

Comment append mon nouveau widget à la palette dans Glade Interface Builder?

entrez la description de l'image ici

Ok, ça va être étape par étape:

  • Notre widget va s’appeler AwesomeTextView , le module dans awesome_text_view il se trouve s’appellera awesome_text_view . Ce sont les seuls noms dont nous avons besoin.

Un widget Glade se compose de deux parties, le module et le catalogue.

  1. Nous créons un catalogue, awesome_text_view.xml , et (en tant que root), l’enregistrons dans /usr/share/glade3/catalogs/

    Voici à quoi ça ressemble:

      glade_python_init        

    Vous devez copier et adapter ce modèle, comme il fonctionne . 🙂

  2. Nous créons un module, awesome_text_view.py , et (encore une fois en tant que root), l’enregistrons dans /usr/lib/glade3/modules/

    Voici à quoi ça ressemble:

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

    Il est maintenant affiché dans Glade et vous pouvez l’append à votre application.

  3. Enfin, vous aurez juste besoin de

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

C’est tout!

Voici une petite application de test montrant comment utiliser votre widget:

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

Vous devez créer un catalogue pour vos widgets, voir ce dossier: /usr/share/glade3/catalogs/ et vous verrez gnome.xml , cherchez un exemple.

Voir aussi la documentation de gnome:

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