我正在用 Python 中的 turtle 包创建图表,它在某种程度上是成功的,除了一个问题。一旦海龟生成了我在代码中的图表,它就会导致程序说“没有响应”,最终我不得不结束任务。我正在使用 Windows 7。
你们中有人经历过这种情况或知道根本原因吗?我尝试完全重新安装 Python,但这似乎并没有影响问题。
以下是一些示例代码,将使其无法响应:
import turtle
from turtle import forward, right, left
forward(50)
我正在用 Python 中的 turtle 包创建图表,它在某种程度上是成功的,除了一个问题。一旦海龟生成了我在代码中的图表,它就会导致程序说“没有响应”,最终我不得不结束任务。我正在使用 Windows 7。
你们中有人经历过这种情况或知道根本原因吗?我尝试完全重新安装 Python,但这似乎并没有影响问题。
以下是一些示例代码,将使其无法响应:
import turtle
from turtle import forward, right, left
forward(50)
我有同样的问题(我也在 Win 7 上,然后我在 Win XP 上遇到了同样的问题),我只是想通了。
完成后你必须说turtle.done()
。
既然我知道了这一点,那就更有意义了,因为 Python 不知道海龟已经完成,它可能正在等待海龟的另一个命令。
这是我假设您正在使用的库的文档(在 Python 2.7 中)。我就是这么想的。它说 Python 2.7,但这也适用于 Python 2.5。
http://docs.python.org/library/turtle.html
希望对您或其他阅读本文的人有所帮助,
亚历克斯
只需在最后添加对 exitonclick 的调用。Turtle 类是使用 Tkinter 实现的,并且exitonclick()
调用mainloop()
将保持海龟窗口打开,直到您单击画布中的任意位置。因此,一个简单的程序如下所示:
from turtle import *
#make a square
for _ in range(4):
forward(100)
left(90)
exitonclick()
享受!
我正在使用 python 3.6.0 并遇到了同样的问题。after 你的turtle.done()
代码块可以防止海龟图形窗口变得无响应。
import turtle
for _ in range(5):
turtle.forward(100)
turtle.right(360/5)
turtle.done() # <------------
添加一个mainloop()
或exitonclick()
或done()
或显示你想要退出海龟窗口的python的东西
IDLE 有一些问题。如果从 python 命令行运行,它将起作用
我认为关闭海龟程序的诀窍是重命名“海龟”模块并将其存储为新对象,然后调用 .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()
当我遇到同样的问题时,我自己测试了很多东西来解决这个问题。
所以我在搜索了很多资源后发现是这样的:
注意。当单击海龟图形窗口时,Windows 用户会发生此问题。
首先,我发现 spyder 环境非常有用
其次,这条线工作得很好:
Turtle.bye()
这将结束执行而无需单击。
当然任何人都需要看到窗口上发生了什么,所以我建议添加这个:
import time
import turtle
<your code on turtle>
time.sleep(5)
Turtle.bye()
记得用大写的 t 写 Turtle。
我曾经遇到过你的问题,然后我尝试为 IDLE 创建一个快捷方式,如下所示(不要忘记“-n”):
target:D:\Python27\Lib\idlelib\idle.pyw -n
并通过快捷方式启动 IDLE,输入您的代码并享受!仅供参考。
在代码末尾添加以下行:
wait_for_user()
那应该可以解决您的问题!
我在 IDLE 中尝试了代码,它运行良好。你有旧/慢机器吗?虽然我不认为这是问题所在。尝试在末尾添加一行:
exitonclick()
它可能就像乌龟看起来有点喜怒无常。此外,如果您找到了帮助或解决了您的问题的答案,请务必投票并接受答案(问题附近的箭头图标),否则问题将显示为未解决,您将继续获得答案。
-哈利
可能有很多原因:- 1.您可能有一个名为 turtle 的 python 文件(如果您有重命名它) 2.尝试在代码末尾使用 t.done()
使用turtle.done() 时,第一次可以,第二次不行。
解决这个问题:
turtle.done()
try:
turtle.bye()
except turtle.Terminator:
pass