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.
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()
_______________________________________________
pygtk mailing list [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/