为turtle.tracer更新了Python龟图(0,0)

时间:2016-10-11 03:39:47

标签: python-3.x turtle-graphics

我是使用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();

1 个答案:

答案 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()

我还制作了哪些是乌龟方法,哪些是屏幕方法,更明确。为了易于使用,龟库的初期程序员友好设计往往会模糊这些。