[pygtk] pixmap question...
Rory Walsh
rorywalsh at ear.ie
Sat Oct 13 18:58:21 WST 2007
I'm trying to animate a line being drawn across the screen. My first
attempt using only a drawingarea proved fruitless so I am now trying it
using a pixmap and a drawing area. I have the following code which is
hacked from several bits of code I found online. I'm confused as to how
I am supposed to update the the drawing area with the pixmap image?
Here's the code, can anyone spot any obvious silliness?
Rory.
p.s. I posted this yesterday but I think it got caught up somewhere in a
different thread, sorry about the noise..
import pygtk
pygtk.require('2.0')
import gtk
import gobject
import math
xcor = 0
def pix_init(d_area, width, height):
d_area.realize()
win = d_area.window
pixmap = gtk.gdk.Pixmap(win, width, height, -1)
context = win.new_gc()
cmap = d_area.get_colormap()
context.foreground = cmap.alloc_color(128*64,128*64,128*64)
for x in range(width):
pixmap.draw_point(context, x, height / 2)
d_area.connect("expose-event", pix_expose, pixmap)
return pixmap
def pix_expose(da, event, pixmap):
x, y, width, height = da.get_allocation()
da.window.draw_drawable(
da.get_style().fg_gc[0], pixmap, 0, 0, 0, 0, -1, -1)
def draw(da, pixmap):
global xcor
win = da.window
context = win.new_gc()
pixmap.draw_point(context, xcor, 100)
da.queue_draw()
xcor=xcor+1
print xcor
return True
def redraw_timeout(da, pixmap):
#da.window.invalidate_rect((0,0,200,200),False)
return True
def main():
global xcor
xcor = 0
width,height=640,480
top = gtk.Window(gtk.WINDOW_TOPLEVEL)
da = gtk.DrawingArea()
#print dir(da)
da.set_size_request(width, height)
top.add(da)
pixmap=pix_init(da, width, height)
top.show_all()
gobject.timeout_add(120,draw,da,pixmap)
gtk.main()
if __name__ =="__main__":
main()
More information about the pygtk
mailing list