Animation with Tk

PoD pod at internode.on.net
Sat Apr 21 09:55:41 EDT 2001


Nick Perkins wrote:
> 
> How can I run a timing loop in a Tk app?
> I would like to use the Tk.Canvas widget to try some simple animation.
> It has some cool features.
> I need to have an animation loop, but also have working buttons, etc,
> which means running the tk mainloop.
> 
> I have tried to use the sched module, sheduling a function that
> updates the canvas and then reschedules itself.
> However, the run() method does not return immediately, which would be
> nice, it just goes to sleep.
> Consequently, I can not seem to get Tk.mainloop() to run
> at the same time as a scheduler.
> Since I am using Windows, I don't think I can fork().
> 
> How can I run a Tk mainloop() and also an event sheduler, or
> some other type of timing loop?

The simplest way may be using the widget.after() method.

class AppWindow:
  def __init__(self):
    self.root = Tk()
    blah blah...
    self.root.after(100,self.after_callback)
    self.root.mainloop()

  def after_callback(self):
    do_animation_stuff()
    self.root.after(100,self.after_callback)



More information about the Python-list mailing list