Ошибка, которую получаешь, связана с тем, что передаешь неправильное количество аргументов в метод coords() объекта Canvas в Tkinter.
Метод coords() ожидает либо 0 аргументов (чтобы получить координаты всех объектов на холсте), либо 4 аргумента (чтобы установить новые координаты для указанного объекта).
В твоем случае, судя по трассировке стека, ты пытаешься получить координаты объекта a с помощью c.coords(a), передаешь только один аргумент вместо 0 или 4.
Чтобы исправить ошибку, убедись, что передаешь правильное количество аргументов в coords()
Правильная реализация кода:
from tkinter import Canvas
def create_canvas():
c = Canvas()
return c
c = create_canvas()
Traceback (most recent call last):
File "C:\Users\Kirill\AppData\Local\Programs\Python\Python312\Lib\tkinter\__init__.py", line 1968, in __call__
return self.func(*args)
^^^^^^^^^^^^^^^^
File "C:\Users\Kirill\PycharmProjects\pythonProject\наброски.py", line 24, in move_oval
x1, y1, x2, y2 = c.coords(a)
^^^^^^^^^^^
File "C:\Users\Kirill\AppData\Local\Programs\Python\Python312\Lib\tkinter\__init__.py", line 2851, in coords
self.tk.call ((self._w, 'coords') + args))]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_tkinter.TclError: wrong # coordinates: expected 0 or 4, got 1