tkinter: Как изменить курсор на элементах canvas? - PullRequest
0 голосов
/ 09 февраля 2019

Я разрабатываю небольшой графический интерфейс Python, просто для удовольствия и для обучения, и я пытался изменить форму курсора над элементами холста.

Я знаю, что можно изменить форму курсора, когданаведите курсор на виджет холста, используя параметр cursor = "what" при создании холста.Но я хотел бы сделать это только для предметов внутри этого холста.

Это делает элемент правильно:

self.image_obj = canvas.create_image(
        self.column_coordinate,
        self.row_coordinate,
        image=image
    )

Это не работает:

self.image_obj = canvas.create_image(
        self.column_coordinate,
        self.row_coordinate,
        image=image,
        cursor="hand1"
    )

Опция "курсор" не существует для элементов, естьспособ обойти проблему?

1 Ответ

0 голосов
/ 09 февраля 2019

Единственный способ изменить курсор - это изменить способ его отображения на холсте.Проверяя каждый раз, когда мышь перемещается, находится ли она внутри граничного блока элемента, который вы хотите изменить, вы можете добиться этого эффекта.

from tkinter import *

canvas = Canvas(width=200,height=200)
canvas.pack()

rec = canvas.create_rectangle(100,0,200,200,fill="red")#example object

def check_hand(e):#runs on mouse motion
    bbox= canvas.bbox(rec)
    if bbox[0] < e.x and bbox[2] > e.x and bbox[1] < e.y and bbox[3] > e.y:#checks whether the mouse is inside the boundrys
        canvas.config(cursor="hand1")
    else:
        canvas.config(cursor="")

canvas.bind("<Motion>",check_hand)#binding to motion
...