[pygtk] GTK_IS_WIDGET on subclass of a widget fails

Christian Becke christianbecke at web.de
Thu May 21 21:44:47 WST 2009


Jeffrey Finkelstein schrieb:
> I'm new to Gtk. I tried to create a subclass of an HBox and add it to a 
> window, but I get a GtkWarning telling me that the assertion 
> `GTK_IS_WIDGET()' fails on the instance of my subclass.
> 
> For example:
> 
> ===code===
> 
> from gtk import Window, HBox, WINDOW_TOPLEVEL, main
> 
> class FooBox(HBox):
>      def __init__(self): pass

I think you have to call the constructor of the parent object here:
	def __init__(self):
		HBox.__init__(self)
and you have to make your new widget known:
import gobject
gobject.type_register (FooBox)

> 
> window = Window(WINDOW_TOPLEVEL)
> window.add(FooBox())
> window.show_all()
> main()
> 
> ===/code===
> 
> yields a warning at "window.add()", namely "GtkWarning: 
> gtk_container_add: assertion `GTK_IS_WIDGET (widget)' failed". This 
> causes the widget to not be displayed in the window.
> 
> I don't really understand why this is; am I missing a method call?

Have a look at the gobject tutorial [1].

HTH,

Chris

[1]
http://www.sicem.biz/personal/lgs/docs/gobject-python/gobject-tutorial.html


More information about the pygtk mailing list