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

如何在Tkinter中获取窗口内鼠标坐标并实现标签跟随?

解决Tkinter标签跟随窗口内鼠标位置的问题

问题分析

当鼠标移动到窗口内的子组件上时,e.x/e.y会返回相对于该子组件的坐标而非主窗口;e.x_root/e.y_root是桌面全局坐标,无法直接对应窗口内的位置,这导致标签无法准确跟随窗口内的鼠标位置。

解决方案

通过主窗口的winfo_rootx()和winfo_rooty()方法获取窗口左上角的全局坐标,用鼠标的全局坐标减去这两个值,就能得到鼠标在主窗口内的相对坐标。修改后的代码如下:

from tkinter import *

def customMouse(e=None):
    # 计算鼠标在主窗口内的相对坐标
    x = e.x_root - root.winfo_rootx()
    y = e.y_root - root.winfo_rooty()
    label.place_configure(x=x, y=y-20)

root = Tk()
label = Label(master=root, text="^")
label.place(x=0, y=0)

root.bind('<Motion>', customMouse)

root.mainloop()

说明

  • root.winfo_rootx():返回主窗口左上角在桌面的全局X坐标
  • root.winfo_rooty():返回主窗口左上角在桌面的全局Y坐标
  • 用e.x_root - root.winfo_rootx()得到鼠标在主窗口内的X偏移量,同理得到Y偏移量,这样无论鼠标在窗口内哪个组件上,都能获取到相对于主窗口的正确位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:51:01