Окно Python Turtle вылетает каждый второй раз
Код ниже представляет собой базовый квадратный рисунок с использованием Turtle в Python.
Запуск кода с первого раза работает. Но повторный запуск кода активирует окно Turtle, которое не отвечает и впоследствии каждый раз вылетает.
Сообщение об ошибке включает в себя raise Terminator
а также Terminator
Перезапуск ядра в Spyder (Python 3.6 на рабочем столе Dell) устраняет проблему, заключающуюся в том, что я могу снова успешно выполнить код, но основная причина - загадка?
Ссылка на другой вопрос, который похож, но пока без ответа.
Пожалуйста, +1 этот вопрос, если вы найдете его достойным ответа!
import turtle
bob = turtle.Turtle()
print(bob)
for i in range(4):
bob.fd(100)
bob.lt(90)
turtle.mainloop()
2 ответа
Я понимаю, что это будет казаться совершенно неудовлетворительным, но я обнаружил, что создание черепахи с:
try:
tess = turtle.Turtle()
except:
tess = turtle.Turtle()
работает (то есть, исключает "работать через раз" кусок. Я также начинаю с
wn = turtle.Screen()
и заканчивается
from sys import platform
if platform=='win32':
wn.exitonclick()
Без этих частей, если я попытаюсь переместить графические окна черепахи в Windows, вещи сломаются. (запускает Spyder для Python 3.6 на компьютере с Windows) edit: конечно, OSX совершенно счастлив без команды exitonclick() и недоволен ею, поэтому добавлена специфичная для платформы версия окончания функции "исправление функции". Попытка... кроме части все еще необходима для OSX.
В модуле используется переменная класса _RUNNING, которая остается истинной между выполнениями при работе в spyder, а не как автономный скрипт. Я попросил обновить модуль.
Между тем, обходной/рабочий пример помимо того, что предложил DukeEgr93
1)
import importlib
import turtle
importlib.reload(turtle)
bob = turtle.Turtle()
print(bob)
for i in range(4):
bob.fd(100)
bob.lt(90)
turtle.mainloop()
import importlib
import turtle
turtle.TurtleScreen._RUNNING=True
bob = turtle.Turtle()
print(bob)
for i in range(4):
bob.fd(100)
bob.lt(90)
turtle.mainloop()