如何正确关闭Python Turtle

如何正确关闭Python Turtle,python,python-3.x,turtle-graphics,Python,Python 3.x,Turtle Graphics,当我从终端运行python程序时,它会运行良好。它使用海龟在while循环中绘制图像 如果我在while循环找到后关闭程序,然后再次尝试运行它,它会抛出一个错误,但是如果我在之后再次运行它,它会正常工作 但是如果我关闭程序,而它仍然在while循环中,它将抛出错误,然后当我再次尝试运行它时,它将正常运行 我的猜测是,乌龟没有正确地关闭,但每一种阻止它的方法都没有起到任何作用 这就是错误: Traceback (most recent call last): File "<stdin&g

当我从终端运行python程序时,它会运行良好。它使用海龟在while循环中绘制图像

如果我在while循环找到后关闭程序,然后再次尝试运行它,它会抛出一个错误,但是如果我在之后再次运行它,它会正常工作

但是如果我关闭程序,而它仍然在while循环中,它将抛出错误,然后当我再次尝试运行它时,它将正常运行

我的猜测是,乌龟没有正确地关闭,但每一种阻止它的方法都没有起到任何作用

这就是错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/tristan/Documents/Python/Orbit/orbit.py", line 16, in orbit
    t.goto(xPos,yPos)
  File "<string>", line 5, in goto
turtle.Terminator
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/home/tristan/Documents/Python/Orbit/Orbit.py”,第16行,在Orbit中
t、 转到(XPO、YPO)
文件“”,第5行,转到
乌龟,终结者
我的代码:

import turtle as t
import time
import math

def orbit(y):
    xPos = 0
    yPos = y

    while (yPos < 15) :

        t.goto(xPos,yPos)
        yPos += 1

    time.sleep(0.005)

t.exitonclick()
将海龟作为t导入
导入时间
输入数学
def轨道(y):
xPos=0
yPos=y
而(yPos<15):
t、 转到(XPO、YPO)
yPos+=1
睡眠时间(0.005)
t、 exitonclick()
exitonclick()
从内存中删除一些通常
turtle
需要工作的对象-因此,如果您尝试在
exitonclick()
之后在terminal/“Python Shell”中运行任何turlte命令,则会出现错误
turtle.Terminator

exitonclick()
期望在
exitonclick()
Python关闭后,
turtle
不需要此对象

如果您可以强制Python再次导入
turtle
模块,那么它可能会再次工作(但通常Python会记住导入的模块,当您再次导入turtle时不会再次导入)


编辑:我查看了
turtle
的源代码,似乎您可以设置

  turtle.TurtleScreen._RUNNING = True
要在退出后再次运行
turtle
,请单击()

使用和不使用
turtle.TurtleScreen.\u RUNNING=True

import turtle as t

t.goto(0,50)
t.exitonclick()

t.TurtleScreen._RUNNING = True

t.goto(50,150)
t.exitonclick()

t.TurtleScreen._RUNNING = True
但是对于更复杂的代码,它可能不起作用,因为
exitonclick()
做其他事情-或者是由
exitonclick()执行的初始函数


显示代码。如何关闭它?您有
退出单击
和类似的函数来结束脚本。它应该停止
mainloop
正确。是的,我有,但它不工作。没有你的代码,我们无法帮助你。从理论上讲,它应该停止,但代码可能构造不正确,您可以做一些不应该做的事情。您运行python(所谓的“python Shell”或“python REPL”或“python处于交互模式”),然后一次又一次地运行它-但是
t.exitonclick()
从内存中删除许多对象,并且
海龟
无法正常运行。即使再次导入文件,也可能无法工作。运行代码的正常方法是
python script.py
turtle
不希望它以这种方式执行-它希望在
t.exitonclick()之后关闭python,因此
t.exitonclick()
从内存中删除一些对象,并且
海龟
无法在没有这些对象的情况下运行,它会显示错误
turtle.Terminator
def _destroy(self):
    root = self._root
    if root is _Screen._root:
        Turtle._pen = None
        Turtle._screen = None
        _Screen._root = None
        _Screen._canvas = None
    TurtleScreen._RUNNING = False
    root.destroy()