关于python:Turtle图形不响应

Turtle Graphics Not Responding

我正在用Python中的turtle包创建图,除一个问题外,它在某种程度上是成功的。 一旦Turtle生成了我在代码中拥有的图表,它就会使程序说"不响应",最终我必须结束任务。 我正在使用Windows 7。

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

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

1
2
3
4
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()可以保持Turtle窗口打开,直到您单击画布中的任何位置。因此,一个简单的程序如下所示:

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

请享用!


我正在使用python 3.6.0并遇到相同的问题。代码块后的turtle.done()防止乌龟图形窗口无响应。

1
2
3
4
5
6
7
import turtle

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

turtle.done() # <------------

添加mainloop()exitonclick()done()或显示要退出龟窗口的python的内容


我认为关闭turtle程序的诀窍是重命名" turtle"模块并将其存储为新对象,然后调用.done()方法或.exitonclick()方法,例如:

1
2
3
4
5
6
7
8
9
10
11
12
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()

或者,类似:

1
2
3
4
5
6
7
8
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()命令完成代码,它就可以工作:

1
2
3
4
5
6
7
8
9
10
11
from turtle import *

forward(100)
shape('turtle')
right(90)
forward(100)
right(90)
forward(100)
right(90)
forward(100)
done()

闲置有问题。如果从python命令行运行,它将起作用


在代码末尾添加以下行:

wait_for_user()

那应该解决您的问题!


我在我的IDLE中尝试了代码,它运行良好。您的机器较旧/较慢吗?尽管我不认为这是问题所在。尝试在最后添加一行:

1
exitonclick()

它可能就像乌龟似的气质。另外,如果您找到了可以帮助或解决问题的答案,请确保投票并接受答案(问题旁边的箭头图标),否则问题将显示为未解决,您将继续获得答案。

-哈里


我曾经遇到过您的问题,然后尝试为IDLE创建快捷方式,如下所示(不要忘了" -n"):

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

并通过快捷方式启动IDLE,输入yr代码并享受!


当使用turtle.done()时,第一次可以使用,但是第二次则不能。

解决这个问题:

1
2
3
4
5
turtle.done()
try:
    turtle.bye()  
except turtle.Terminator:
    pass

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


如何在Python 3.4.3中解决此问题:

1
2
3
4
5
6
7
8
>>> help(turtle.bye)
Help on function bye in module turtle:

bye()
    Shut the turtlegraphics window.

    Example:
    >>> bye()