С помощью метода 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, которая уменьшит размер прямоугольника.