On Sat, 2007-10-13 at 11:58 +0100, Rory Walsh wrote: > 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?
I don't know what's wrong with your code, but I know you are using outdated APIs to draw; you should be using cairo instead. This example of animation using cairo might help you: http://www.gnome.org/~gjc/merrychristmas.py > > 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() > _______________________________________________ > pygtk mailing list [email protected] > http://www.daa.com.au/mailman/listinfo/pygtk > Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/ -- Gustavo J. A. M. Carneiro <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> "The universe is always one step beyond logic" -- Frank Herbert _______________________________________________ pygtk mailing list [email protected] http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/
