Обзор
Вы говорите об объектах Canvas.Каждый объект холста имеет уникальный целочисленный идентификатор.Никакие два объекта не могут иметь одинаковый идентификатор.Идентификатор присваивается tkinter и возвращается в ваш код при создании объекта.Этот идентификатор необходим, чтобы позже иметь возможность ссылаться на каждый отдельный объект.
С другой стороны, теги являются абсолютно произвольными (за исключением того, что они не могут быть последовательностью цифр) и присваиваются вами.Вы можете назначить один или несколько тегов для объекта (или без тегов для объекта), и несколько объектов могут использовать одни и те же теги.
Использование
Оба тега и идентификаторы могут использоваться многимиметодов холста, таких как move
, bbox
, coords
и т. д.
Наиболее распространенное использование тегов - группирование нескольких объектов в один логический объект.У корабля может быть тело, несколько крыльев, может быть, другие части.Каждая из этих частей может иметь уникальный идентификатор, но вы можете назначить один и тот же тег всем частям, чтобы вы могли перемещать все части вместе в унисон.
Для конкретного примера, скажем, вы делаете корабль из прямоугольника для тела и двух треугольников для крыльев.У каждого будет уникальный идентификатор.Если вы хотите переместить эти три вместе, как если бы они были одним, вы можете присвоить каждому из них тег «ship-1».Если вы вызовете `canvas.move (" ship-1 ", 10, 0), все три из этих объектов будут перемещены на десять пикселей вправо.
Если вы создадите второй корабль, вы можете датьКусочки этого корабля с надписью «Корабль-2».Таким образом, вы можете перемещать только «корабль-1» или просто «корабль-2».Кроме того, если вы также назначите каждому из этих объектов тег «Корабль» в дополнение к их уникальному тегу «Корабль», то вы можете переместить все корабли одновременно.
Сделав еще один шаг вперед, скажем, вамимитируют космический бой.Половина кораблей - хорошие парни, а половина - плохие парни.Так что теперь, в дополнение к присвоению каждой части корабля метки «корабль-1», а также присвоению каждой части корабля метки «Корабль», вы также можете присвоить каждой части корабля метку «хорошо» или «bad "
Вариант использования
Имея все вышеперечисленное, вы можете сделать следующее:
- переместить одну отдельную часть одного корабля с помощьюИдентификатор
- Переместить все фигуры для первого корабля с «Корабль-1»
- Переместить все фигуры для второго корабля с «Корабль-2»
- Переместить все«хорошие» корабли вместе в строю с «хорошим»
- перемещают все «плохие» корабли вместе в строю с «плохим»
- перемещают все корабли, используя «Корабль»
- перемещайте все с помощью специального тега «все», который автоматически относится ко всему на холсте.
И, конечно, вместо перемещения вы также можете изменить цвет любого из них или удалить всеиз объектов для любого из них, переместите объект или объекты поверх или под другими объектами (z-index), eдц.