Python 乌龟绘图已更新 turtle.tracer(0,0)

Python turtle drawing updated for turtle.tracer(0,0)

我是新手,使用 python 3.2.3

当我运行模块在python IDLE时,乌龟在屏幕上画了一个没有任何更新的正方形,所以window出现空白,在我输入任何内容后key, turtle 和 square 由于 turtle.update().

的调用而出现

但是,当我双击文档中存储以下代码的.py文件并直接执行时,在我输入任何键之前总是出现方块。

有趣的是没有显示海龟,只显示了正方形。

即使我已经将 turtle tracer 设置为 (0,0),绘制后似乎只有正方形有 turtle 更新。

这是否被视为错误,我该如何解决?感谢您的帮助。

import turtle

def drawSquare():
    turtle.down();
    turtle.begin_fill();
    turtle.goto(10, 0);
    turtle.goto(10, 10);
    turtle.goto(0, 10);
    turtle.goto(0, 0);
    
    turtle.end_fill();
    turtle.up();

def tUpdate():
    turtle.update();

turtle.tracer(0,0);
drawSquare();
input("Not updated. Press any key.");
tUpdate();
print("Updated");
turtle.mainloop();

您遇到了一些不利因素:为 tracer() 提供的糟糕文档以及 end_fill()up() 导致更新的事实。 tracer() 并不是真的要在您准备好显示之前向用户隐藏内容——这是一种速度优化,这样用户就不必在复杂的图像中查看每个绘图步骤。您无法完全控制何时进行更新。

这是对您的示例的修改,它显示了您想要的行为,但代价是它不再是一个填充的正方形。我已经将您的 input() 触发器替换为鼠标点击 window,但您的方法在这里也同样有效:

from turtle import Turtle, Screen

def drawSquare(turtle):
    turtle.goto(100, 0)
    turtle.goto(100, 100)
    turtle.goto(0, 100)
    turtle.goto(0, 0)

screen = Screen()

screen.tracer(0, 0)

screen.onclick(lambda x, y: screen.update())

turtle = Turtle()

drawSquare(turtle)

screen.mainloop()

我也把哪些是乌龟方法,哪些是屏幕方法,说得更清楚了。为了易于使用,turtle 库的初学者友好设计倾向于模糊这些。