在Python海龟画图的屏幕中可以显示gif动态图片吗?答案是可以的。我们可以用屏幕的addshape命令添加gif图到造型字典,然后把海龟的造型设为这张gif图即可。不过遗憾的是,它只会显示第一帧。如果要显示多帧动画,那么就要把gif图进行拆帧处理。所谓的拆帧,就是把gif图中的每一幅图给分离出来。在本例中使用提webp图形。读者把它当成gif图即可。拆帧使用的是pillow模块的ImageSequence子模块的迭代器命令。在下面的代码中,定义了一个叫getframes的函数。它会把gif图所有的帧都包装为PhotoImage对象,把它们放在一个列表中,并且返回,同时返回的还有图片的尺寸。下面是哗啦啦的下雨啦.py的源代码。
""" 哗啦啦的下雨啦.py 本程序演示如何在Python的海龟画图屏幕中显示动态图片。 关键词:拆帧,造型字典,列表推导式,造型类。 """ import time import turtle from PIL import Image,ImageTk,ImageSequence def getframes(filename): """ 拆帧,返回PhotoImage对象列表。 """ frames = [] # 新建列表 im = Image.open(filename) # 载入图片 pass # 这里省略若干行代码 return frames,im.size screen = turtle.getscreen() # 获取屏幕 screen.screensize(1,1) # 画布尺寸 frames,size = getframes('giphy.webp') # 拆帧 screen.setup(*size) # 设定窗口大小 screen.title('哗啦啦的下雨啦by李兴球') # 设定标题 pass # 这里省略若干行代码 index = 0 while True: turtle.shape(f"gif_{index}") # 设定造型 index = index + 1 # 索引加1 index = index % len(shapes) # 对数量求余 time.sleep(0.02) # 等待0.02秒
需要所有源代码及素材,请
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)
发表评论