如何正确关闭Python Turtle
当我从终端运行python程序时,它会运行良好。它使用海龟在while循环中绘制图像 如果我在while循环找到后关闭程序,然后再次尝试运行它,它会抛出一个错误,但是如果我在之后再次运行它,它会正常工作 但是如果我关闭程序,而它仍然在while循环中,它将抛出错误,然后当我再次尝试运行它时,它将正常运行 我的猜测是,乌龟没有正确地关闭,但每一种阻止它的方法都没有起到任何作用 这就是错误:如何正确关闭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
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()