<p>除了<code>angie = turtle.Turtle()</code>(不是<code>turtle.Screen()</code>)之外,您可能会注意到的另一个问题是<code>windowexitonclick()</code>语句将没有任何效果。点击窗口不会退出并关闭窗口,因为它在无限循环之后:</p>
<pre><code>while (True):
angie.forward(size)
angie.right(91)
size = size + 1
window.exitonclick()
</code></pre>
<p>却永远也达不到。解决这个问题的最简单方法是,在不增加计时器复杂性的情况下,使这个循环成为一个<code>for</code>循环,并在其他地方使用一个范围,以便<code>angie</code>最终停止并让下一行代码执行。</p>
<p>最后,它看起来不像你的目标,因为<code>brad</code>在他的正方形上画五条边而不是四条。一旦我们修复了它,它看起来是正确的,<code>angie</code>从中间开始,而不是从边缘开始。</p>
<p>使用上述和其他样式更改重新编写代码:</p>
<pre><code>from turtle import Turtle, Screen
def draw_square(some_turtle):
for _ in range(4):
some_turtle.forward(200)
some_turtle.right(90)
def draw_art():
# Turtle Brad
brad = Turtle(shape="turtle")
brad.color("yellow")
brad.pensize(2)
brad.speed("normal") # 6/normal is the default so don't need to do it
for _ in range(36):
draw_square(brad)
brad.right(10)
# Turtle Angie
angie = Turtle(shape="turtle")
angie.color("blue")
angie.pensize(2)
angie.speed(5) # slightly slower than brad
size = 1
for _ in range(300):
angie.forward(size)
angie.right(91)
size += 1
window = Screen()
window.bgcolor("black")
draw_art()
window.exitonclick()
</code></pre>
<p>一旦<code>angie</code>完成她的设计,您应该可以单击窗口使其消失。对于这样一个复杂的设计,我很想将<code>turtle.speed()</code>设置为“fast”和“fast”,因为我没有耐心。(除非您需要对速度进行非常精细的控制,否则请使用“最快”、“快速”、“正常”、“慢速”和“最慢”来代替数字,以避免意外。)</p>
<p><a href="https://i.stack.imgur.com/iwEHA.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/iwEHA.png" alt="enter image description here"/></a></p>