18

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

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

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

import turtle
from turtle import forward, right, left

forward(50)
4

12 回答 12

24

我有同样的问题(我也在 Win 7 上,然后我在 Win XP 上遇到了同样的问题),我只是想通了。

完成后你必须说turtle.done()

既然我知道了这一点,那就更有意义了,因为 Python 不知道海龟已经完成,它可能正在等待海龟的另一个命令。

这是我假设您正在使用的库的文档(在 Python 2.7 中)。我就是这么想的。它说 Python 2.7,但这也适用于 Python 2.5。
http://docs.python.org/library/turtle.html

希望对您或其他阅读本文的人有所帮助,
亚历克斯

于 2012-05-30T01:29:14.377 回答
10

只需在最后添加对 exitonclick 的调用。Turtle 类是使用 Tkinter 实现的,并且exitonclick()调用mainloop()将保持海龟窗口打开,直到您单击画布中的任意位置。因此,一个简单的程序如下所示:

from turtle import *
#make a square
for _ in range(4):
   forward(100)
   left(90)
exitonclick()

享受!

于 2012-03-30T04:12:53.547 回答
5

我正在使用 python 3.6.0 并遇到了同样的问题。after 你的turtle.done()代码块可以防止海龟图形窗口变得无响应。

import turtle 

for _ in range(5):
    turtle.forward(100)
    turtle.right(360/5)

turtle.done() # <------------
于 2017-02-26T19:23:26.400 回答
2

添加一个mainloop()exitonclick()done()或显示你想要退出海龟窗口的python的东西

于 2013-12-24T02:12:28.907 回答
1

IDLE 有一些问题。如果从 python 命令行运行,它将起作用

于 2012-02-25T19:17:28.037 回答
1

我认为关闭海龟程序的诀窍是重命名“海龟”模块并将其存储为新对象,然后调用 .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()
于 2020-04-01T15:09:35.643 回答
1

当我遇到同样的问题时,我自己测试了很多东西来解决这个问题。

所以我在搜索了很多资源后发现是这样的:

注意。当单击海龟图形窗口时,Windows 用户会发生此问题。

首先,我发现 spyder 环境非常有用

其次,这条线工作得很好:

Turtle.bye()

这将结束执行而无需单击。

当然任何人都需要看到窗口上发生了什么,所以我建议添加这个:

import time
import turtle

<your code on turtle>

time.sleep(5)
Turtle.bye() 

记得用大写的 t 写 Turtle。

于 2020-11-10T12:53:55.017 回答
0

我曾经遇到过你的问题,然后我尝试为 IDLE 创建一个快捷方式,如下所示(不要忘记“-n”):

target:D:\Python27\Lib\idlelib\idle.pyw -n

并通过快捷方式启动 IDLE,输入您的代码并享受!仅供参考。

于 2013-05-08T02:31:16.487 回答
0

在代码末尾添加以下行:

wait_for_user()

那应该可以解决您的问题!

于 2014-09-10T22:17:15.350 回答
0

我在 IDLE 中尝试了代码,它运行良好。你有旧/慢机器吗?虽然我不认为这是问题所在。尝试在末尾添加一行:

exitonclick()

它可能就像乌龟看起来有点喜怒无常。此外,如果您找到了帮助或解决了您的问题的答案,请务必投票并接受答案(问题附近的箭头图标),否则问题将显示为未解决,您将继续获得答案。

-哈利

于 2014-01-20T19:48:49.603 回答
0

可能有很多原因:- 1.您可能有一个名为 turtle 的 python 文件(如果您有重命名它) 2.尝试在代码末尾使用 t.done()

于 2022-01-07T15:34:45.717 回答
-1

使用turtle.done() 时,第一次可以,第二次不行。

解决这个问题:

turtle.done()
try:
    turtle.bye()   
except turtle.Terminator:
    pass

从这里 在 Spyder 中运行海龟程序的问题

于 2019-05-13T21:17:23.370 回答