Hi, I am having trouble getting "A gtk.gdk.Window Composited Windows example" from gtk.gdk.Window in "The gtk.gdk Class Reference" to work. This is from the PyGTK 2.0 Reference Manual "For PyGTK version 2.12.1", "2008-01-03".
When I try to run the example as in the documentation, I get:
> post:V3> python demo2.py
> demo2.py:108: GtkWarning: Attempt to draw a drawable with depth 24 to a
> drawable with depth 32
> gtk.main()
> Traceback (most recent call last):
> File "demo2.py", line 55, in window_expose_event
> child.allocation.y)
> TypeError: cairo_set_source_pixmap() argument 1 must be gtk.gdk.Pixmap, not
> gtk.gdk.Window
> Traceback (most recent call last):
> File "demo2.py", line 55, in window_expose_event
> child.allocation.y)
The file 'demo2.py' is attached.
In an attempt to correct the second error (at line 55),
I replaced
> #the source data is the (composited) event box
> cr.set_source_pixmap (child.window,
> child.allocation.x,
> child.allocation.y)
with
> #the source data is the (composited) event box
> w,h = child.window.get_size()
> cr.set_source_pixmap (gtk.gdk.Pixmap( child.window, w, h, -1 ),
> child.allocation.x,
> child.allocation.y)
Now, I get:
> post:V3> python demo2b.py
> demo2b.py:109: GtkWarning: Attempt to draw a drawable with depth 24 to a
> drawable with depth 32
> gtk.main()
> Traceback (most recent call last):
> File "demo2b.py", line 67, in window_expose_event
> cr.paint_with_alpha(0.5)
> cairo.Error: the target surface has been finished
Changing that last change to:
> #the source data is the (composited) event box
> w,h = child.window.get_size()
> pm = gtk.gdk.Pixmap( child.window, w, h, -1 )
> cr.set_source_pixmap (pm,
> child.allocation.x,
> child.allocation.y)
I have now reduced the messages down to one:
> post:V3> python demo2c.py
> demo2c.py:110: GtkWarning: Attempt to draw a drawable with depth 24 to a
> drawable with depth 32
> gtk.main()
My questions are:
1. Why did introducing the the assignment of the pixmap
to a local variable ('pm') change things, and what
was the cause of that "the target surface has been finished"
error?
2. Why am I still getting the warning about drawing a depth 24 to
a depth 32?
3. What is the behaviour of this thing supposed to be? I don't
think I get it. When I mouse over the button, the text
disappears. When I try other mods to the code (i.e., add 2
buttons in an Hbox), I seem to get some random dirt written
by one of the expose handlers.
I'm using Ubuntu Hardy, with python 2.5.2 and
>>> gtk.ver
(2, 14, 1)
>>> gtk.gtk_version
(2, 12, 9)
>>> gtk.pygtk_version
(2, 12, 1)
--
Neal Holtz http://cee.carleton.ca/~nholtz
Dept. of Civil and Environmental Engineering Carleton University
Ottawa, Ontario, Canada K1S 5B6. [EMAIL PROTECTED]
Key: http://cee.carleton.ca/~nholtz/pubkey.asc
demo2.py
Description: application/python
_______________________________________________ pygtk mailing list [email protected] http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/
