Mouse Position Python Tkinter
You could set up a callback to react to <Motion>
events:
import Tkinter as tk
root = tk.Tk()
def motion(event):
x, y = event.x, event.y
print('{}, {}'.format(x, y))
root.bind('<Motion>', motion)
root.mainloop()
I'm not sure what kind of variable you want. Above, I set local variables x
and y
to the mouse coordinates.
If you make motion
a class method, then you could set instance attributes self.x
and self.y
to the mouse coordinates, which could then be accessible from other class methods.
At any point in time you can use the method winfo_pointerx
and winfo_pointery
to get the x,y coordinates relative to the root window. To convert that to absolute screen coordinates you can get the winfo_pointerx
or winfo_pointery
, and from that subtract the respective winfo_rootx
or winfo_rooty
For example:
root = tk.Tk()
...
x = root.winfo_pointerx()
y = root.winfo_pointery()
abs_coord_x = root.winfo_pointerx() - root.winfo_rootx()
abs_coord_y = root.winfo_pointery() - root.winfo_rooty()