pythontkintermouse-position

How to show live mouse position on tkinter window


i would like to know if there was a way to keep showing the live mouse position on a tkinter window. I know how to find mouse coordinates.

x, y = win32api.GetCursorPos()
mousecords = Label(self.root, text='x : ' + str(x) + ', y : ' + str(y))
mousecords.place(x=0, y=0)

But I need the label to keep updating as and when the mouse moves. Help will be appreciated Thank you!


Solution

  • You can use after() to periodically get the mouse coordinates and update the label.

    Below is an example:

    import tkinter as tk
    import win32api
    
    root = tk.Tk()
    
    mousecords = tk.Label(root)
    mousecords.place(x=0, y=0)
    
    def show_mouse_pos():
        x, y = win32api.GetCursorPos()
        #x, y = mousecords.winfo_pointerxy() # you can also use tkinter to get the mouse coords
        mousecords.config(text=f'x : {x}, y : {y}')
        mousecords.after(50, show_mouse_pos) # call again 50ms later
    
    show_mouse_pos() # start the update task
    root.mainloop()