python 乌龟在使用示踪剂 (0,0) 时创建闪烁的图像

python turtle creating flickering images when using tracer(0,0)

我正在尝试制作一个可以重复绘制两条线的程序。我的代码是

import turtle

screen = turtle.Screen()
t = turtle.Turtle()
t.hideturtle()
t.speed(0)
screen.tracer(0,0)

while True:
    screen.clear()
    t.penup()   
    t.goto(1,12)
    t.pendown()
    t.goto(4,67)
    t.penup()
    t.goto(50, 3)
    t.pendown()
    t.goto(4, 73)
    screen.update()

我希望这会在 turtle 中显示两条不闪烁的线。但是它正在画一条线并且那条线在闪烁。线条确实需要每一帧都重新绘制,这样我就可以用线条做一些其他的事情。为什么会这样?

简短回答:不要 screen.clear(),而是 t.clear()

清除屏幕时,会将其许多属性重置为默认值,包括 tracer() 设置。您只是想清除乌龟在上一次迭代中绘制的任何内容,所以改为清除乌龟。

从长远来看,您不希望 while True: 在像 turtle 这样的事件驱动环境中。我会把这段代码写得更像:

from turtle import Screen, Turtle

def one_step():
    turtle.clear()

    turtle.penup()
    turtle.goto(1, 12)
    turtle.pendown()
    turtle.goto(4, 67)
    turtle.penup()
    turtle.goto(50, 3)
    turtle.pendown()
    turtle.goto(4, 73)

    screen.update()
    screen.ontimer(one_step, 50)

screen = Screen()
screen.tracer(False)

turtle = Turtle()
turtle.hideturtle()

one_step()

screen.mainloop()