Python Tkinter after () Solo ejecutando una vez

Algo que parece que debería ser tan simple me está dando un gran problema. Tengo una GUI de Tkinter que trato de actualizar a intervalos regulares. Específicamente, estoy eliminando elementos de un canvas y reemplazándolos. Como ejemplo aquí, aunque solo estoy intentando imprimir una statement que demuestre que la función posterior está funcionando correctamente. Cuando coloco un botón y lo presiono, las cosas funcionan bien, pero me gustaría hacerlo automáticamente utilizando la función after (). Aunque no estoy teniendo mucha suerte para que funcione.

class app(): def __init__(self, frame): self.pad = tk.Canvas(frame) self.pad.create_window(10, 10, window=tk.Button(self.pad,command=update) self.pack(fill="both") #More Stuff #Neither one worked frame.after(1000,update) #self.pad.after(1000,update) def update(self): print "Updating" #More Stuff if __name__=="__main__": root = tk.TK() app(root) root.mainLoop() 

Por supuesto, este no es el código completo, pero espero que tenga suficiente sentido para ver lo que estoy tratando de hacer. Entonces, cuando hago clic en el botón, veo que aparecen las palabras “Actualizando”. Pero cuando uso la función after, aparece una vez al inicio y nunca más. También estoy en la versión 2.4.4 de Python, no juzgues que no tengo nada que decir, jaja. ¡Gracias por cualquier y toda la ayuda!

Haga una llamada a after al final de la update :

 def __init__(self, frame): self.frame = frame ... self.frame.after(1000, self.update) def update(self): ... self.frame.after(1000, self.update) 

Este es el camino después de las obras. Solo self.update cola la callback (por ejemplo, self.update ) una vez. Por los documentos :

La callback solo se llama una vez por cada llamada a este método. Para seguir llamando a la callback, debe volver a registrar la callback dentro de sí mismo.