Избегайте RecursionError в коде рисования черепахиPython

Программы на Python
Ответить
Anonymous
 Избегайте RecursionError в коде рисования черепахи

Сообщение Anonymous »


Я создаю простую программу, которая использует черепаху в холсте tkinter, чтобы пользователь мог рисовать с помощью мыши. Функция рисования работает нормально, однако после того, как вы немного порисуете, программа останавливается и вызывает ошибку RecursionError.

Код: Выделить всё

from turtle import *
import tkinter as tk

box=tk.Tk()

canv=ScrolledCanvas(box)
canv.pack()

screen=TurtleScreen(canv)

p=RawTurtle(screen)

p.speed(0)

def draw(event):

p.goto(event.x-256,185-event.y) #The numbers are here because otherwise the turtle draws off center. Might be different depending on computer.

canv.bind('', draw)

box.mainloop()
Теоретически это должно отрисовываться нормально, но вместо этого вызывается ошибка RecursionError. Я не понимаю, что я могу сделать, чтобы предотвратить это, кроме, возможно, обертывания функции в цикл попытки. Будем очень признательны за любую помощь.


Вывод в оболочке Python:

Код: Выделить всё

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files (x86)\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:\Users\Charlie\Desktop\demo.py", line 17, in draw
p.speed(0)
File "C:\Program Files (x86)\Python36-32\lib\turtle.py", line 2174, in speed
self.pen(speed=speed)
File "C:\Program Files (x86)\Python36-32\lib\turtle.py", line 2459, in pen
self._update()
File "C:\Program Files (x86)\Python36-32\lib\turtle.py", line 2660, in _update
self._update_data()
File "C:\Program Files (x86)\Python36-32\lib\turtle.py", line 2651, in _update_data
self._pencolor, self._pensize)
File "C:\Program Files (x86)\Python36-32\lib\turtle.py", line 545, in _drawline
self.cv.coords(lineitem, *cl)
File "", line 1, in coords
RecursionError: maximum recursion depth exceeded while calling a Python object
Я потратил много времени на поиски ответа, и, насколько я могу судить, его нигде легко найти. Это мой первый вопрос на этом сайте, поэтому, пожалуйста, простите меня, если я что-то сделал не так.

Подробнее здесь: https://stackoverflow.com/questions/476 ... paint-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»