I'm trying to subclass a DrawingArea and am getting a warning saying
it isn't realized. Here's the relevant section of code:
class Canvas(gtk.DrawingArea):
def __init__(self, parent, width, height):
gtk.DrawingArea.__init__(self)
self.the_parent = parent
self.configured = 0
self.realized = 0
self.set_double_buffered(1)
self.set_size_request(width, height)
self.connect_after('realize', self.on_realize)
self.connect('configure_event', self.on_configure)
self.connect('expose_event', self.on_expose)
self.connect('button_press_event', self.on_button_press)
self.connect('motion_notify_event', self.on_motion_notify)
parent.add(self)
self.show()
#------------------------------------------------------------------
def on_realize(self, *args):
print 'on_realize', self.flags(), gtk.REALIZED
if self.flags() & gtk.REALIZED:
print self.flags() & gtk.REALIZED
print 'it is realized'
self.set_events(gtk.gdk.EXPOSURE_MASK
| gtk.gdk.LEAVE_NOTIFY_MASK
| gtk.gdk.BUTTON_PRESS_MASK
| gtk.gdk.POINTER_MOTION_MASK
| gtk.gdk.POINTER_MOTION_HINT_MASK)
self.realized = 1
#return gtk.TRUE
When I run it, I get:
on_configure
on_realize 2164288 64
64
it is realized
(TestCanvas.py:17300): Gtk-CRITICAL **: file gtkwidget.c: line 5209
(gtk_widget_set_events): assertion `!GTK_WIDGET_REALIZED (widget)'
failed
The self.set_events line is the only call to set_events so it has to
be that line. Looking at the GTK_WIDGET_REALIZED macro in gtkwidget.h
I don't see how my if test can be true and still have the assertion
fail.
Any ideas on what I'm doing wrong? This is gtk/pygtk 2.x.
Thanks,
Dave
_______________________________________________
pygtk mailing list [EMAIL PROTECTED]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/