Is there a way to get the position of the mouse and set it as a var?
问题:
回答1:
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.
回答2:
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()
回答3:
Personally, I prefer to use pyautogui
, even in combination with Tkinter. It is not limited to Tkinter app, but works on the whole screen, even on dual screen configuration.
import pyautogui
x, y = pyautogui.position()
In case you want to save various positions, add an on-click event.
I know original question is about Tkinter.