如何在Tkinter窗口中实时更新鼠标坐标值?
实时显示鼠标位置的Tkinter窗口实现
你的问题在于当前代码仅在程序启动时获取一次鼠标坐标,之后不会自动更新;而直接用while循环会阻塞Tkinter的事件循环(mainloop),导致窗口无法响应任何操作,自然看不到坐标更新。
正确的做法是利用Tkinter的after()方法,它可以在指定时间后调用指定函数,通过在函数内部再次调用after()来实现持续更新:
from tkinter import * import pyautogui as pag window = Tk() window.geometry("200x200") window.title("Mouse Position Tracker") window.config(background="#4ceefc") label1 = Label(window, text="mouse coordinates:") label1.place(x=20, y=50) label2 = Label(window, text="") label2.place(x=30, y=90) def update_mouse_pos(): # 获取最新鼠标位置 coordinates = pag.position() # 更新标签文本,格式化显示更清晰 label2.config(text=f"X: {coordinates[0]}, Y: {coordinates[1]}") # 每隔100毫秒(0.1秒)再次调用自己,实现持续更新 window.after(100, update_mouse_pos) # 启动更新循环 update_mouse_pos() window.mainloop()
关键说明:
after(delay_ms, function):让Tkinter在delay_ms毫秒后执行指定函数,不会阻塞事件循环- 在
update_mouse_pos内部递归调用after(),就能持续获取并更新鼠标坐标 - 调整
100这个数值可以改变更新频率,数值越小更新越频繁(比如50就是0.05秒更新一次)
内容的提问来源于stack exchange,提问作者Patxi Tolonen
相关产品推荐
相关产品推荐

