1

Turtle.tracer 的具体用法是什么?在 python 文档中,Turn turtle animation on/off and set delay for update drawings.我用它来禁用动画,但参数不清楚,例如,如果我使用 turtle.trace,那么在这段代码中,如果我使用 turtle.trace,turtle 不会绘制表格的其余部分如何设置正确的参数。

import turtle
turtle.width(5)
yd=xd=-64
turtle.tracer(8,25)#This is the problem
for i in range(2):
    turtle.up()
    turtle.goto(-197.5,yd)
    turtle.down()
    turtle.seth(0)
    turtle.fd(394)
    yd+=128
    turtle.up()
    turtle.goto(xd,197.5)
    turtle.down()
    turtle.seth(270)
    turtle.fd(394)
    xd+=128
4

2 回答 2

2

使用turtle.delay(0)

import turtle
turtle.width(5)
yd=xd=-64
turtle.delay(0) # <----
for i in range(2):
    turtle.up()
    turtle.goto(-197.5,yd)
    turtle.down()
    turtle.seth(0)
    turtle.fd(394)
    yd+=128
    turtle.up()
    turtle.goto(xd,197.5)
    turtle.down()
    turtle.seth(270)
    turtle.fd(394)
    xd+=128
turtle.mainloop()

或者turtle.update,如果您使用turtle.tracer

...
turtle.tracer(8,25)
for i in range(2):
    ...
turtle.update()
tracer.mainloop()
于 2013-10-27T15:48:17.940 回答
1

Turtle.tracer 的具体用法是什么?...我用它来禁用动画,但论点不清楚...

龟屏单例的tracer()方法(也暴露为顶级函数)的功能很容易理解,但它的参数不是。默认设置为:

turtle.tracer(1, 10)

让我们首先处理可选的第二个参数。为了方便起见,它只是简单地传递给delay()海龟屏幕单例的方法。从那里它被传递到turtle 的TK 基础上。由于这个答案是关于tracer()我不会delay()在这里讨论。

我看到了两种使用方法tracer()。更复杂的是提供一个数值n告诉海龟只执行每第 n 次更新而不是每次更新。这取决于您对绘图代码的深入了解,例如,您只需要每 257 次更新一次。并在实际发生更新时有所了解。对于我们大多数人来说,情况并非如此。

更简单的使用方法tracer()是使用一个布尔参数(伪装成数字)并与update()函数结合使用:

tracer(False)  # turn off visible drawing

for ...:
    ...  # draw stuff
    update()  # update the visible drawing now
...
tracer(True)  # return to normal drawing

需要注意的几点: 1)clear()turtle screen 单例的方法重置tracer()为其默认值;2) 某些海龟命令,例如end_fill(),可能会导致更新发生,无论您的跟踪器设置如何。

您的代码使用以下更简单的模型进行了修改tracer()

import turtle

yd = xd = -64

turtle.width(5)
turtle.tracer(False)

for i in range(2):
    turtle.penup()
    turtle.goto(-197.5, yd)
    turtle.pendown()
    turtle.setheading(0)
    turtle.forward(394)

    yd += 128

    turtle.penup()
    turtle.goto(xd, 197.5)
    turtle.pendown()
    turtle.setheading(270)
    turtle.forward(394)

    xd += 128

    turtle.update()  # only display completed lines

turtle.hideturtle()
turtle.tracer(True)
turtle.mainloop()
于 2018-02-01T18:34:34.530 回答