哗啦啦的下雨啦_海龟显示gif动图原理程序

哗啦啦的下雨啦_海龟显示gif动图原理程序

李兴球python海龟拆帧显示动图哗啦啦的下雨啦

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

李兴球

李兴球的博客是Python创意编程原创博客