Nuestro grupo de especialistas luego de ciertos días de investigación y recopilación de de datos, hemos dado con los datos necesarios, deseamos que te resulte útil para tu proyecto.
Solución:
En cualquier momento puede utilizar el método winfo_pointerx
y winfo_pointery
para obtener las coordenadas x,y relativas a la ventana raíz. Para convertir eso en coordenadas de pantalla absolutas, puede obtener el winfo_pointerx
o winfo_pointery
y de eso restar el respectivo winfo_rootx
o winfo_rooty
Por ejemplo:
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()
Puede configurar una devolución de llamada para reaccionar a
eventos:
import Tkinter as tk
root = tk.Tk()
def motion(event):
x, y = event.x, event.y
print(', '.format(x, y))
root.bind('', motion)
root.mainloop()
No estoy seguro de qué tipo de variable quieres. Arriba, configuro variables locales x
y y
a las coordenadas del ratón.
Si tu haces motion
un método de clase, entonces podría establecer una instancia attributes self.x
y self.y
a las coordenadas del mouse, que luego podrían ser accesibles desde otros métodos de clase.
Personalmente, prefiero usar pyautogui
, incluso en combinación con Tkinter. No se limita a la aplicación Tkinter, sino que funciona en toda la pantalla, incluso en la configuración de pantalla dual.
import pyautogui
x, y = pyautogui.position()
En caso de que desee guardar varias posiciones, agregue un evento al hacer clic.
Sé que la pregunta original es sobre Tkinter.
valoraciones y comentarios
Recuerda algo, que tienes permiso de parafrasear si te fue de ayuda.