python - tkinter:如何在画布项目上更改光标?
问题描述
我正在开发一个小型 python gui,只是为了好玩和学习,我一直在尝试改变画布项目上的光标形状。
我知道在画布创建时使用 cursor="whatever" 选项可以在将鼠标悬停在画布小部件上时更改光标形状。但我只想对这个画布内的项目这样做。
这使得项目正确:
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"
)
项目似乎不存在“光标”选项,有没有办法解决这个问题?
解决方案
更改光标的唯一方法是更改它在画布上的呈现方式。通过每次鼠标移动时检查它是否在你希望它切换的项目的边界框内,你可以达到这个效果。
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
推荐阅读
- java - 为通用队列类创建 toString() 方法时出现逻辑错误
- java - Spring Boot 和 Lets Encrypt 没有共同的密码套件
- python - 如何通过运行 docker-compose 知道主机 IP
- javascript - 如何在另一个函数中引用父元素?
- visual-studio-2019 - 当类没有出现在引用中时,如何从我的 vb 解决方案中删除一个类?
- powershell - 使用没有循环的 cmdlet 后如何访问错误属性
- macos - 自定义 NSFont 选择器菜单
- javascript - 如何对每个产品实施星级评分系统
- java - 仿射变换后丑陋的对角线
- c - 使用“&&”和“||” 在 C 中条件之外的语句中