Вопросы библиотеки черепах - PullRequest
0 голосов
/ 29 января 2020

Я использую библиотеку Turtle в python. Но проблема в том, что ошибка прекращения повышения появляется в 50% случаев.

Traceback (most recent call last):
  File "/Users/mamane/Desktop/New/Modules/Turtle.py", line 39, in <module>
    tortue  = turtle.Turtle()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/turtle.py", line 3813, in __init__
    RawTurtle.__init__(self, Turtle._screen,
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/turtle.py", line 2557, in __init__
    self._update()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/turtle.py", line 2660, in _update
    self._update_data()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/turtle.py", line 2646, in _update_data
    self.screen._incrementudc()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/turtle.py", line 1292, in _incrementudc
    raise Terminator
turtle.Terminator

Спасибо!

1 Ответ

0 голосов
/ 29 января 2020

Мы можем восстановить код, который вы указали в своем комментарии, но добавив print("done") в конце, вы увидите, что его выполнение занимает много времени, но работает нормально, по крайней мере, для меня:

import turtle
import math

bob = turtle.Turtle()
bob.speed('fastest')
bob.color('red', 'yellow')

bob.begin_fill()

for i in range(2000):
    bob.left(i % 180)
    bob.forward(math.sqrt(i) * 15)

bob.end_fill()

print("done")
turtle.done()

Как только вы получите сообщение "готово", вы сможете закрыть окно без исключения.

Я не думаю, что то, что вы сказали, является точным, потому что ошибка Raise Terminator также появляется в этой программе :( - Sopraxxx

Глядя на ваш второй, более простой пример, из ваших комментариев:

import turtle

keith = turtle.Turtle()
keith.color('red')
keith.shape('square')
keith.fd(100)
keith.left(20)
keith.forward(100)
print('done')
turtle.done()

Это также отлично работает, для меня, как есть. Однако Вот один глюк в вашем вопросе, сообщение об ошибке Python гласит:

tortue  = turtle.Turtle()

Но это не отражено в предоставленном вами коде, поэтому вы не показали нам точный код и точная ошибка, которую он выдает. Я могу воспроизвести такую ​​же трассировку ошибки, которую вы получили:

Traceback (most recent call last):
  File "test.py", line 3, in <module>
    tortue = turtle.Turtle()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/turtle.py", line 3816, in __init__
    visible=visible)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/turtle.py", line 2557, in __init__
    self._update()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/turtle.py", line 2660, in _update
    self._update_data()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/turtle.py", line 2646, in _update_data
    self.screen._incrementudc()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/turtle.py", line 1292, in _incrementudc
    raise Terminator
turtle.Terminator

, просто выполнив:

import turtle
turtle.bye()
tortue = turtle.Turtle()

Есть ли какой-то шаг, который вы исключаете из своего вопроса? Вы называете свой исходный файл чем-то отличным от Turtle.py, поскольку это может привести к путанице с самой библиотекой turtle в операционной системе без учета регистра.

...