[Glade-users] How-to define my own class inheriting from gtk.Window and using glade file

Tristan Van Berkom tristanvb at openismus.com
Wed Apr 6 11:36:55 EDT 2011


On Wed, 2011-04-06 at 21:01 -0400, Dominique Beauchamp wrote:
> Thanks for the fast answer.
> 
> 
> Here is what I did:
> 
> 
> 1) I copied pythonplugin.py and pythonplugin.xml as shown in the
> example in a directory XYZ
> 2) I defined an environment variable named GLADE_ENV_CATALOG_PATH =
> XYZ (where my .py and my .xml are)

Sorry, the docs in that version have a typo, it should be
 "GLADE_CATALOG_PATH"  (with no _ENV).

> 3) I started Glade (3.7.3) Where is my widget?
> 
> 
> In the xml, I find this:
> 
> 
> <glade-widget-group name="python" title="Python">
>    <glade-widget-class-ref name="MyBox"/>
>  </glade-widget-group>
> 
> 
> I guess I should have a group (or a tab) named "Python" with a widget
> named "MyBox" but I don't. What did I do incorrectly?
> 
> 
> Dominique
> 
> 2011/4/5 Tristan Van Berkom <tvb at gnome.org>
>         
>         On Wed, Apr 6, 2011 at 12:46 PM, Dominique Beauchamp
>         <lgd.beauchamp at gmail.com> wrote:
>         > Hello all!
>         > I'm using Glade with PyGTK (Python 2.6) and I'm quite happy
>         about the
>         > results. I succeed to define an application class like this:
>         > class MyApp:
>         >
>         > def __init__( self ):
>         >
>         > Builder = gtk.Builder()
>         > Builder.add_from_file( 'filename' )
>         > Builder.connect_signals( self )
>         > self.__MainWnd = Builder.get_object( 'MainWnd' )
>         >
>         > etc...
>         >
>         > But here is what I want to do: creating a class that derives
>         from gtk.window
>         > and being the main window defined within Glade.
>         > class MyWnd( gtk.Window ):
>         >
>         > def __init__( self, ??? ):
>         >
>         > ...
>         >
>         > Here I want that the object returned by
>         Builder.get_object( 'MainWnd' ) be
>         > the object created by the actual class MyWnd because this
>         class is in fact a
>         > gtk.Window.
>         > Is my explaination clear?
>         > Maybe it is not possible this way and I have to create
>         manually my own
>         > gtk.Window then grab the VBox/HBox/Table with
>         Builder.get_object() and add
>         > it to my window. But it is not that cute.
>         > Any idea will be welcome and thanks in advance!
>         
>         
>         Yes, you can define classes in python and use them in Glade
>         and GtkBuilder.
>         
>         For PyGTK & GTK+2 you must use Glade 3.6 or 3.8, if you
>         migrate to
>         PyObject & GTK+3
>         then you must use Glade 3.10.
>         
>         There is an example of how to setup Glade so that your custom
>         python widgets
>         show up in Glade's palette, in Glade's API reference here:
>         
>          http://library.gnome.org/devel/gladeui/3.6/pythonsupport.html
>         
>         Basically you just have to define a short xml catalog and have
>         it in
>         GLADE_CATALOG_PATH
>         when firing up Glade, and have a copy of the python source in
>         the same
>         directory.
>         
>         Enjoy,
>             -Tristan
> 
> 
> 
> -- 
> Dominique Beauchamp
> lgd.beauchamp at gmail.com
> 
> 
> 
> _______________________________________________
> Glade-users maillist  -  Glade-users at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/glade-users




More information about the Glade-users mailing list