首先,您要为每个帧创建一个新的画布对象。最终,您将有成千上万的图像相互叠加。这是非常低效的;当您开始具有数千个对象时,canvas小部件会出现性能问题。
与其在画布上创建新的图像对象,不如使用画布的itemconfig方法重新配置现有对象。
其次,对于这样一个简单的任务,您不需要复杂的线程处理。在tkinter中有一个众所周知的用于制作动画的模式:绘制一帧,然后
after在将来使用该函数进行调用。
像这样:
def animate(self): if self._image_id is None: self._image_id = self.display.create_image(...) else: self.itemconfig(self._image_id, image= the_new_image) self.display.after(self.gif["delay"], self.animate)
最后,除非有严格的理由使用画布,否则可以通过使用Label小部件来进一步降低复杂性。



