С помощью метода tag_bind() можно привязать к определенному элементу в Canvas (например, к линии) событие:
tag_bind(тег_или_идентификатор_элемента, событие, функция)
Первый параметр представляет тег или идентификатор элеиментов, для которых добавляется событие.
Второй параметр - обрабатываемое событие.
Третий параметр - функция, которая выполняется при возникновении события
Рассмотрим небольшой пример:
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("METANIT.COM")
root.geometry("250x200")
canvas = Canvas(bg="white", width=250, height=150)
canvas.pack(fill=BOTH, expand=1)
# размеры прямоугольника
big_size = (60, 60, 150, 150)
small_size = (60, 60, 100, 100)
# обработчики событий
def make_big(event): canvas.coords(id, big_size)
def make_small(event): canvas.coords(id, small_size)
id = canvas.create_rectangle(small_size, fill="red")
# привязка событий к элементу с идентификатором id
canvas.tag_bind(id, "<Enter>", make_big)
canvas.tag_bind(id, "<Leave>", make_small)
root.mainloop()
Здесь на Canvas добавляется прямоугольник, идентификатор которого хранится в переменной id.
Сначала привязываем к прямоугольнику с идентификатором id событие "<Enter>", то есть событие вхождения курсора в пределы прямогольника:
canvas.tag_bind(id, "<Enter>", make_big)
Когда указатель мыши окажется в пределах прямогольника, сработает функция make_big, которая с помощью метода canvas.coords изменит
координаты и размеры прямоугольника:
def make_big(event): canvas.coords(id, big_size)
Аналогичным образом привязывается событие "<Leave>", которое срабатывает, когда указатель мыши выходит за пределы прямоугольника. В этом случае срабатывает функция make_small, которая уменьшит размер прямоугольника.