您可以使用通用Tk窗口小部件
after()方法来计划在以毫秒为单位指定的延迟后运行的函数.这只发生一次,所以通常函数本身也会调用after()来使进程永久化.
在下面的代码中,定义了一个自定义的AnimatedGif容器类,它在一个列表中分别加载和保存动画序列的所有帧,允许使用[]索引语法快速(随机)访问它们.它使用photo Tk manual page中提到的-index indexvalue图像格式子选项从文件中读取单个帧.
您应该能够使用相同的技术为多个图像或附加到其他类型的窗口小部件(如Button和Canvas实例)的图像设置动画.
from Tkinter import *
class AnimatedGif(object):
""" Animated GIF Image Container. """
def __init__(self, image_file_path):
self.image_file_path = image_file_path
self._frames = []
self._load()
def __len__(self):
return len(self._frames)
def __getitem__(self, frame_num):
return self._frames[frame_num]
def _load(self):
""" Read in all the frames of a multi-frame gif image. """
while True:
frame_num = len(self._frames) # number of next frame to read
try:<