Почему не работает строка с модулем canvas
example = canvas.create_oval(x1 - x, y1 - x, x1 + x, y1 + x, fill = random.choice(color))
data["id"] = id(example)
circles.append(data)
data = {}
print(circles)
while True:
pass
for circle in circles:
x0, y0, x1, y1 = canvas.coords(circle["id"])
Выдает ошибку, хотя "id" проверено и является уникальным числом. Почему canvas.coords не принимает id круга? А пишет что объект не итерируемый.
Traceback (most recent call last):
module moduli_oval.py line 24
TypeError: 'NoneType' object is not iterable
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Нужно убрать вызов функции id:
example = canvas.create_oval(x1 - x, y1 - x, x1 + x, y1 + x, fill = random.choice(color))
data["id"] = example # было id(example)
Методы объекта Canvas, название которых начинается с create_, уже возвращают id объекта, который можно использовать в методе canvas.coords (и других).
Встроенная функция id возвращает "питоновский" id объекта, метод coords этот id не распознает как id объекта на Cavnas. id(example) - это не id круга, это id id круга (по факту - адрес объекта, который уже является id круга).