Глава 18 · Canvas по-настоящему
Item ID: что возвращает create_*
Число, которое create_* возвращает — не пустая формальность: это способ вернуться к фигуре позже.
create_* возвращает идентификатор
Каждый вызов canvas.create_line/rectangle/oval(...) возвращает
целое число — item ID только что созданного элемента. Если его не сохранить,
фигура всё равно нарисуется, но обратиться к ней позже будет нечем:
item_id.py
item_id = canvas.create_rectangle(10, 10, 100, 60, outline="blue")
print(item_id) # например, 1 — конкретное число зависит от того, сколько элементов уже создано
Этот номер пригождается для трёх вещей, которые мы разберём дальше в главе:
Зачем помнить item_id
coords(item_id, ...)
изменить координаты существующего элемента
раздел 18.18–18.19
itemconfig(item_id, ...)
изменить цвет/толщину без пересоздания
раздел 18.19
delete(item_id)
убрать именно этот элемент, не все остальные
разделы 18.19, 18.24
item_id — не индекс списка и не id() объекта Python
Соблазн считать, что
item_id — это позиция в списке («первая фигура — id 0», «вторая — id 1») ошибочен: Canvas выдаёт номера по своим правилам и не обязан начинать с нуля или идти без пропусков после удаления элементов. Не полагайтесь на конкретные значения — только на то, что каждый item_id уникально ссылается на один элемент.Практика: item ID
Автоматическая проверка — храним фигуры по item_id как по ключу словаря, а не по индексу списка