【问题标题】:When I execute stamp()/clearstamps() in turtle(python), whether I need to update it?当我在turtle(python)中执行stamp()/clearstamps()时,是否需要更新它?
【发布时间】:2021-04-26 07:32:11
【问题描述】:

我想实现这样的流程

  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(),因为我没有在我的程序中关闭我的跟踪器。

感谢您的帮助!

【问题讨论】:

    标签: python turtle-graphics python-turtle


    【解决方案1】:

    我会避免在turtle中使用time.sleep(),因为它会干扰事件循环,而是使用turtle自己的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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 2016-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多