<p>你不需要,也不想要。首先,您需要根据<code>tracer()</code>和<code>update()</code>适当安排您的课程:</p>
<pre><code>from turtle import Screen, Turtle
def drawPinwheelAnimation(length, lengthChange=1, backwardLength=None):
if backwardLength is None:
backwardLength = length
turtle.clear()
drawPinwheel(0, 0, length, backwardLength)
drawPinwheel(3*length, 0, length, backwardLength)
drawPinwheel(0, 3*length, length, backwardLength)
drawPinwheel(-3*length, 0, length, backwardLength)
drawPinwheel(0, -3*length, length, backwardLength)
screen.update()
backwardLength += lengthChange
if backwardLength == (1.5*length) or backwardLength == 0.5*length:
lengthChange *= -1
screen.ontimer(lambda: drawPinwheelAnimation(length, lengthChange, backwardLength), 100)
def drawPinwheel(xPos, yPos, fdLength, bkLength):
turtle.penup()
turtle.setpos(xPos, yPos)
turtle.pendown()
for _ in range(12):
turtle.forward(fdLength)
turtle.backward(bkLength)
turtle.right(30)
screen = Screen()
screen.tracer(False)
turtle = Turtle()
turtle.hideturtle()
turtle.setheading(90)
drawPinwheelAnimation(50)
screen.mainloop()
</code></pre>
<p>其次,我用计时器事件替换了<code>while True:</code>,它在像turtle这样的事件驱动环境中没有位置。请注意<code>ontimer()</code>的第二个参数,它是再次调用此方法之前的时间延迟</p>