¿Cómo actualizar una imagen en un canvas?

Esta es la esencia del código con el que estoy teniendo problemas:

camelot = Canvas(main, width = 400, height = 300) camelot.grid(row = 0, column = 0, rowspan = 11, columnspan = 3) MyImage = PhotoImage(file = "sample1.gif") camelot.create_image(0, 0, anchor = NW, image = MyImage) 

Esto se ejecuta al principio. Lo que quiero hacer más adelante en otra función es reemplazar "sample1.gif" por "sample2.gif" , y, posiblemente más tarde, reemplazar eso a su vez por "sample3.gif" . Estoy atascado y nada de lo que he intentado ha funcionado hasta ahora.

Añadir imagen al canvas:

self.image_on_canvas = self.canvas.create_image(0, 0, image = ...)

Cambiar imagen:

self.canvas.itemconfig(self.image_on_canvas, image = ...)


Ejemplo completo:

 from Tkinter import * #---------------------------------------------------------------------- class MainWindow(): #---------------- def __init__(self, main): # canvas for image self.canvas = Canvas(main, width=60, height=60) self.canvas.grid(row=0, column=0) # images self.my_images = [] self.my_images.append(PhotoImage(file = "ball1.gif")) self.my_images.append(PhotoImage(file = "ball2.gif")) self.my_images.append(PhotoImage(file = "ball3.gif")) self.my_image_number = 0 # set first image on canvas self.image_on_canvas = self.canvas.create_image(0, 0, anchor = NW, image = self.my_images[self.my_image_number]) # button to change image self.button = Button(main, text="Change", command=self.onButton) self.button.grid(row=1, column=0) #---------------- def onButton(self): # next image self.my_image_number += 1 # return to first image if self.my_image_number == len(self.my_images): self.my_image_number = 0 # change image self.canvas.itemconfig(self.image_on_canvas, image = self.my_images[self.my_image_number]) #---------------------------------------------------------------------- root = Tk() MainWindow(root) root.mainloop() 

Imágenes utilizadas en el ejemplo:

ball1.gif ball1.gif ball2.gif ball2.gif ball3.gif ball3.gif

Resultado:

introduzca la descripción de la imagen aquí

  MyImage = PhotoImage(file = "sample1.gif") labelorbuttontodisplayit.image = MyImage labelorbuttontodisplayit.configure(image=MyImage) 

: P que debería hacerlo. Solo intenté usar ese código en la etiqueta o los botones, nunca como canvas, pero creo que puedes adaptar un poco ese fragmento de código.