这就是我遇到麻烦的代码的本质:
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)
这是在开始时运行的。我稍后在另一个函数中要做的 将“sample1.gif”替换为“sample2.gif” 然后是“sample3.gif”。我被卡住了,我一直在尝试的东西都没有 工作至今。
“sample1.gif”
“sample2.gif”
Add image to canvas:
self.image_on_canvas = self.canvas.create_image(0, 0, image = ...)
Change image:
self.canvas.itemconfig(self.image_on_canvas, image = ...)
Full example:
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()