[Glade-users] How-to define my own class inheriting from gtk.Window and using glade file
- From: lgd.beauchamp at gmail.com (Dominique Beauchamp)
- Subject: [Glade-users] How-to define my own class inheriting from gtk.Window and using glade file
- Date: Thu, 7 Apr 2011 22:28:06 -0400
Thanks. I had some difficulties to find how to set new env. variables on
Ubuntu but it is not the point...
What was not clear in the doc was that I beleived I had to have one catalog
(xml) per class (widget). I is clear (maybe I'm wrong) that the best way is
to have a master .py file that imports all the other widget python files and
one catalog file with multiple class entries. Maybe this should be made
clearer in the doc.
Anyway, it works fine! Thank you!
2011/4/6 Tristan Van Berkom <tristanvb at openismus.com>
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
--
*Dominique Beauchamp*
lgd.beauchamp at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/glade-users/attachments/20110407/589f167c/attachment.html
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]