You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter中Canvas绘制鼠标十字线时矩形绑定的Motion事件被阻塞问题

问题原因

你创建的十字线默认堆叠在所有已绘制的矩形上层,十字线作为Canvas的有效元素会捕获鼠标<Motion>事件,导致下方的矩形无法接收事件触发。

解决方法

创建十字线时将其设置为禁用状态,禁用状态的Canvas元素不会响应任何鼠标事件,不会遮挡下层元素的事件触发,只需在create_line方法中添加state=DISABLED参数即可。
也可以选择在创建十字线时指定below参数,让十字线绘制到所有矩形的下层,同样可以解决事件遮挡问题。

核心修改代码

def canvmove(event):
    # print("canvas motion ", event.x, event.y)
    dashes = [5, 25]
    canvas.delete('mousepos')
    # 添加state=DISABLED参数,让十字线不捕获鼠标事件
    canvas.create_line(event.x, 0, event.x, 1000, dash=dashes, tags='mousepos', state=DISABLED)
    canvas.create_line(0, event.y, 1000, event.y, dash=dashes, tags='mousepos', state=DISABLED)

内容的提问来源于stack exchange,提问作者Julien Merlin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:15:02