在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资源。)

