龟图形没有响应

时间:2011-08-27 21:17:28

标签: python windows-7 turtle-graphics

我在Python中使用turtle包创建图表,除了一个问题外,它在某种程度上是成功的。一旦乌龟生成我在代码中的图表,它会导致程序说“没有响应”,最终我必须结束任务。我使用的是Windows 7。

你们有没有经历过这个或知道根本原因?我尝试完全重新安装Python,但这似乎并没有影响问题。

以下是一些使其无法响应的示例代码:

import turtle
from turtle import forward, right, left

forward(50)

11 个答案:

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

从这里 Problems with running turtle programs in Spyder