使用Turtle后如何关闭窗口

时间:2019-01-15 11:39:53

标签: python jupyter-notebook spyder turtle-graphics

我正在尝试在Spyder和Jupyter中使用Turtle,但是在尝试关闭窗口时遇到了麻烦。

我在Windows 10的Spyder 3.3.1和Jupyter 5.6.0上使用Python 3.7

这是我尝试过的

import turtle as trtl

trtl.forward(100)
trtl.left(90)
trtl.forward(100)
trtl.left(90)
trtl.forward(100)
trtl.left(90)
trtl.forward(100)
trtl.exitonclick()

我工作正常,但是如果关闭窗口并尝试再次运行相同的代码,则会收到以下错误:

---------------------------------------------------------------------------
Terminator                                Traceback (most recent call last)
<ipython-input-9-ad2d84897daf> in <module>()
      1 import turtle as trtl
      2 
----> 3 trtl.forward(100)
      4 trtl.left(90)
      5 trtl.forward(100)

~\Anaconda3\lib\turtle.py in forward(distance)

Terminator: 

我尝试了done()bye()exitonclick()的多种组合,但我无法使其工作

2 个答案:

答案 0 :(得分:0)

这是乌龟documentation的摘录:

  

如果配置字典中的“ using_IDLE”值是False(默认值),则还要输入mainloop。备注:如果使用带-n开关的IDLE(无子进程),则应在turtle.cfg中将此值设置为True。在这种情况下,IDLE自己的mainloop对于客户端脚本也是活动的。

因此,您可以将using_IDLE = True添加到turtle.cfg文件中以解决此问题。这将阻止exitonclick()进入主循环。

答案 1 :(得分:0)

有点晚了,但是我认为在Jupyter中解决此问题的最佳选择是:

public static <T,K,U> Collector<T,?,Map<K,U>> toMap(Function<? super T,? extends K> keyMapper,
                                                Function<? super T,? extends U> valueMapper)

问题是TK应用程序是在import importlib import turtle importlib.reload(turtle) turtle.forward(1) turtle.exitonclick() 中创建的,并在您单击窗口中的import turtle时终止了。此后,当您尝试执行一些乌龟指令时,TK应用程序将终止,然后发生错误。因此,重新加载乌龟程序包即可解决问题