微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在turtle(python)中执行stamp()/clearstamps()时,是否需要更新?

如何解决在turtle(python)中执行stamp()/clearstamps()时,是否需要更新?

我想实现一个这样的流程

  1. time.sleep(1)
  2. 用turtle.stamp() 显示一个红色方块
  3. time.sleep(1)
  4. 用turtle.clearstamps(-1)删除红色方块

这是我的代码

import turtle
import time

snakes = turtle.Turtle()
snakes.ht()
snakes.shape("square")
snakes.up()
time.sleep(1)
snakes.color("Red")
snakes.stamp()
# turtle.update()
time.sleep(1)
snakes.clearstamps(-1)
turtle.done()

当我运行这段代码时,红色方块根本没有出现。似乎红色方块已被“clearstamps()”删除。但是,我在删除之前采取了第 3 步延迟 1 秒。

经过一些尝试,我发现如果我在创建图章后添加更新(只是上面程序的注释部分),程序会成功运行,删除前有1秒的延迟。

我想知道为什么要添加这个 update(),因为我没有关闭程序中的跟踪器。

感谢您的帮助!

解决方法

我会避免在海龟中使用 time.sleep(),因为它会干扰事件循环,而是使用海龟自己的 ontimer() 方法:

from turtle import Screen,Turtle

def action():
    stamp = turtle.stamp()
    screen.ontimer(lambda: turtle.clearstamp(stamp),1000)

turtle = Turtle()
turtle.hideturtle()
turtle.color('red')
turtle.shape('square')

screen = Screen()
screen.ontimer(action,1000)
screen.mainloop()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。