我有这个愚蠢的程序,它可以检索随机的猫图像并播放喵声:
import urllib.request
import turtle
import time
import playsound
screen = turtle.Screen()
url = 'https://cataas.com/cat/gif'
filename = "random-cat.gif"
urllib.request.urlretrieve(url, filename)
screen.bgpic('random-cat.gif')
playsound.playsound('meow.mp3', True)
turtle.done()
但是,如果我想在一个循环中重复执行该代码,并且有时间延迟,则图像根本不会显示:
screen = turtle.Screen()
while True:
url = 'https://cataas.com/cat/gif'
filename = "random-cat.gif"
urllib.request.urlretrieve(url, filename)
screen.bgpic('random-cat.gif')
playsound.playsound('meow.mp3', True)
time.sleep(5)
turtle.done()
有人可以解释这是为什么以及如何解决吗?我认为这可能与time.sleep()
的工作方式有关。
答案 0 :(得分:0)
turtle.done()
永远不会被调用,因为您永远不会退出循环,应该渲染它,并且在每次循环迭代之后
答案 1 :(得分:0)
我对此进行了测试(声音除外),发现一个问题-乌龟缓存图片,因此将相同文件名与新图片一起使用将不起作用!我们可以使用代码修复此问题,以在下载带有计数器的文件后对文件进行重命名,以及清除文件。或者我们可以在后台操纵乌龟的图像缓存:
import urllib.request
import turtle
import playsound
url = 'https://cataas.com/cat/gif'
filename = 'random-cat.gif'
sound = 'meow.mp3'
def meow():
urllib.request.urlretrieve(url, filename)
if screen.bgpic() == filename:
screen._bgpics[filename] = screen._image(filename)
screen.bgpic(filename)
playsound.playsound(sound, True)
screen.ontimer(meow, 5000)
screen = turtle.Screen()
meow()
turtle.done()