我是使用python 3.2.3的新手
当我在python IDLE中运行模块时,乌龟在屏幕上绘制了一个没有任何更新的正方形,因此窗口显示为空白,并且在我输入了任何键之后,由于调用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()
触发器换成了在窗口上的鼠标单击,但是您的方法在这里也同样适用:
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()
我也更明确地说明了哪些是乌龟方法,哪些是屏幕方法。为了易于使用,乌龟库的程序员起初的友好设计趋于使这些模糊。