У меня есть эта простая программа, сделанная с Python 2.7.5
. В основном я просто рисую кучу случайных вещей на экран, но когда я закрываю холст, я получаю странную ошибку.Python turtle выдает ошибку при закрытии
import turtle
import random
import time
turtle.hideturtle()
class Mus:
def __init__(self):
turtle.setx(random.randint(1,100))
turtle.sety(random.randint(1,100))
turtle.circle(random.randint(1,100))
while True:
Mus()
turtle.exitonclick()
Когда я закрываю программу, я получаю эту ошибку:
Traceback (most recent call last):
File "/Users/jurehotujec/Desktop/running.py", line 15, in <module>
Mus()
File "/Users/jurehotujec/Desktop/running.py", line 12, in __init__
turtle.circle(random.randint(1,100))
File "<string>", line 1, in circle
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/turtle.py", line 1908, in circle
self._rotate(w)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/turtle.py", line 3110, in _rotate
self._update()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/turtle.py", line 2564, in _update
self._update_data()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/turtle.py", line 2555, in _update_data
self._pencolor, self._pensize)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/turtle.py", line 569, in _drawline
self.cv.coords(lineitem, *cl)
File "<string>", line 1, in coords
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 2240, in coords
self.tk.call((self._w, 'coords') + args)))
TclError: invalid command name ".4335016920"
Что я делаю неправильно? Я новичок в Python, так что любая помощь будет оценила :)
Благодарности
Я не думаю, что вы должны беспокоиться об этом - в конечном счете, это будет от какого-то вопроса глубоко внутри стандартной библиотеки вокруг ненадо промывочного события в процессе выхода. Но кроме трассировки, он делает то, что вы хотите, не так ли? – AdamKG
да, но это выглядит просто уродливым :) – intelis
Ну, вы можете «импортировать Tkinter», а затем обернуть ваши вызовы 'Mus()' в try/except block catch 'Tkinter.TclError' с 'break' в исключении тела , но это была бы плохая идея, так как она также проглотила бы «реальные» ошибки в вашем коде приложения. Но AFAICT здесь есть законная ошибка, поэтому * должен быть * traceback - просто не один, о котором вы должны что-либо делать, ошибка не связана с вашим кодом. – AdamKG