当我使用turtle模块用这个简单的函数画一个圆的时候:
def draw_shape(self):
canvas = Screen()
t = Turtle()
t.circle(self.r)
canvas.exitonclick()当我第一次调用这个函数时,它会打开一个新的窗口并画一个圆,我点击它退出,当我再次尝试从控制台的菜单中调用这个函数时,我得到了一个错误:
Original exception was:
Traceback (most recent call last):
File "main.py", line 136, in <module>
main()
File "main.py", line 132, in main
OPTIONS[user_input][1](shapes)
File "main.py", line 48, in handle_sixth_menu_option
t = Turtle()
File "/usr/lib/python3.6/turtle.py", line 3816, in __init__
visible=visible)
File "/usr/lib/python3.6/turtle.py", line 2557, in __init__
self._update()
File "/usr/lib/python3.6/turtle.py", line 2660, in _update
self._update_data()
File "/usr/lib/python3.6/turtle.py", line 2646, in _update_data
self.screen._incrementudc()
File "/usr/lib/python3.6/turtle.py", line 1292, in _incrementudc
raise Terminator
turtle.Terminator发布于 2022-01-01 18:54:21
这是因为turtle模块(目前大多数参考实现)使用了一个名为_RUNNING的类变量。在使用exitonclick()方法的过程中,这将变为false。
将您的代码更改为下面的代码应该会有所帮助。
import turtle
def draw_shape(self):
canvas = Screen()
turtle.TurtleScreen._RUNNING=True
t = turtle.Turtle()
t.circle(self.r)
canvas.exitonclick()发布于 2017-12-09 14:09:00
很抱歉,我正在android应用程序中写这个答案,我不确定代码是否像它应该的那样突出显示,但你可以尝试以下操作-
def draw_shape(self):
import turtle as t
canvas = Screen()
t.circle(self.r)
canvas.exitonclick()你的代码不能工作的原因是因为你已经通过点击退出删除或退出了'def‘函数中的海龟实例。因此,通过使用'import turtle as t‘,您将再次调用它并创建一个新实例。希望这能有所帮助!
发布于 2018-04-02 16:43:25
它是由t= Turtle()引起的。您可以在函数的末尾添加turtle.bye()。
https://stackoverflow.com/questions/46796846
复制相似问题