我在Python中使用turtle包创建图表,除了一个问题外,它在某种程度上是成功的。一旦乌龟生成我在代码中的图表,它会导致程序说“没有响应”,最终我必须结束任务。我使用的是Windows 7。
你们有没有经历过这个或知道根本原因?我尝试完全重新安装Python,但这似乎并没有影响问题。
以下是一些使其无法响应的示例代码:
import turtle
from turtle import forward, right, left
forward(50)
答案 0 :(得分:17)
我遇到了同样的问题(我在Win 7上也是如此,然后我在Win XP上遇到了同样的问题),我只想出来了。
完成后你必须说turtle.done()
。
既然我知道这一点,那就更有意义了,因为Python不知道乌龟已经完成了,它可能正在等待乌龟的另一个命令。
这是我假设您正在使用的库的文档(在Python 2.7中)。这就是我想出来的方式。它说Python 2.7,但这也适用于Python 2.5 http://docs.python.org/library/turtle.html
希望有帮助(对于你或其他任何读这篇文章的人),
亚历
答案 1 :(得分:9)
最后添加一个对exitonclick的调用。 Turtle类是使用Tkinter实现的,exitonclick()
调用mainloop()
,这将使龟窗保持打开状态,直到您单击画布中的任何位置。所以,一个简单的程序看起来像这样:
from turtle import *
#make a square
for _ in range(4):
forward(100)
left(90)
exitonclick()
享受!
答案 2 :(得分:2)
添加mainloop()
或exitonclick()
或done()
或显示要退出海龟窗口的python的内容
答案 3 :(得分:2)
我正在使用python 3.6.0并遇到了同样的问题。代码块后的turtle.done()
可防止龟图形窗口无响应。
import turtle
for _ in range(5):
turtle.forward(100)
turtle.right(360/5)
turtle.done() # <------------
答案 4 :(得分:1)
IDLE存在一些问题。如果从python命令行运行它将起作用
答案 5 :(得分:1)
在代码末尾添加以下行:
wait_for_user()
那应该可以解决你的问题!
答案 6 :(得分:1)
我认为关闭turtle程序的诀窍是重命名“ turtle”模块并将其存储为新对象,然后调用.done()方法或.exitonclick()方法,例如:
from turtle import *
import turtle
#make a square
for i in range(4):
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.done()
或者,例如:
from turtle import *
import turtle as t
#draw a right angle
for i in range(4):
t.forward(100)
t.left(90)
t.forward(100)
t.exitonclick()
仅导入“ turtle”模块将无法正常工作。使用“ from turtle import *”通配符。然后,您将能够使用诸如forward()或left()之类的调用函数,而不必使用任何前缀或“ object_name.forward()”。只要使用简单的done()或exitonclick()命令完成代码,它就可以工作:
from turtle import *
forward(100)
shape('turtle')
right(90)
forward(100)
right(90)
forward(100)
right(90)
forward(100)
done()
答案 7 :(得分:1)
当我遇到同样的问题时,我为此问题测试了很多东西。
因此,我在搜索许多资源后发现的是:
NB。 Windows用户在乌龟图形窗口上单击 单击 时会发生此问题。
首先,我发现间谍环境非常有用
第二,这行工作正常:
Turtle.bye()
这将结束执行而无需单击。
当然任何人都需要查看窗口上正在发生的事情,所以我建议添加以下内容:
import time
import turtle
<your code on turtle>
time.sleep(5)
Turtle.bye()
记住要用大写字母t写龟。
答案 8 :(得分:0)
我遇到了你的问题,然后我尝试为IDLE创建一个快捷方式,如下所示(不要忘记&#34; -n&#34;):
target:D:\Python27\Lib\idlelib\idle.pyw -n
通过快捷方式启动IDLE,键入yr代码并享受!FYI。
答案 9 :(得分:0)
我在我的IDLE中尝试了代码,它运行得很好。你有一台旧/慢机器吗?虽然我不认为这是问题所在。尝试在最后添加一行:
exitonclick()
它可能就像乌龟似乎有点气质。此外,如果您找到了帮助或解决问题的答案,请务必提出并接受答案(问题附近的箭头图标),因为问题显示为未解决,您将继续获得答案。
-Harry
答案 10 :(得分:0)
使用turtle.done()时,第一次可以使用,但是第二次则不能。
解决此问题:
turtle.done()
try:
turtle.bye()
except turtle.Terminator:
pass