我是使用python 3.2.3的新手
当我在python IDLE中运行模块时,乌龟在屏幕上没有任何更新时绘制了一个正方形,因此窗口显示为空白,在我输入任何键后,由于乌龟的调用,乌龟和方块出现了.update()。
但是,当我双击在我的文档中存储以下代码的.py文件并直接执行它时,在我输入任何键之前,该方块总是出现。
有趣的是,乌龟没有出现,只展示了广场。
即使我已经将乌龟追踪器设置为(0,0),似乎只有在绘制后才能更正方形的乌龟更新。
这被视为错误,我该如何解决?谢谢你的帮助。
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();
答案 0 :(得分:2)
你有一些事情要对你不利:为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()
我还制作了哪些是乌龟方法,哪些是屏幕方法,更明确。为了易于使用,龟库的初期程序员友好设计往往会模糊这些。