Obtener coordenadas cartesianas al pulsar con el mouse un punto cualquiera en una gráfica y producir acciones de trading
Hola a todos.
Estaría muy agradecido si me pudieran ayudar con el siguiente problema:
Estoy programando, en python, una GUI en la que se le permita al usuario pulsar, con el mouse, cualquier punto sobre una gráfica. Ese evento producirá cierta información relacionada con el punto pulsado.
El problema es que para producir la información del punto, se requiere convertir las coordenadas en pixeles del punto a coordenadas cartesianas, es decir, obtener las coordenadas x y y originales. Donde x es un entero que va desde xmin=0 hasta un xmax. Mientras que y es un número real, que va desde un ymin hasta un ymax.
Obtengo unos valores, pero no logro conseguir valores, mas o menos, precisos con las siguientes instrucciones, que tengo dentro de la función que atiende el evento de pulsar el mouse:
abs_coord_x = root.winfo_pointerx() - root.winfo_rootx()
abs_coord_y = root.winfo_pointery() - root.winfo_rooty()
ancho =root.winfo_width()
alto = root.winfo_height()
xreal=(abs_coord_x*(xmax - xmin))/ancho + xmin
yreal=((alto - abs_coord_y)*(ymax - ymin))/alto + ymin
Evidentemente, existen problemas de identificación de los márgenes de las ventana donde inserto el gráfico, pero no sé cómo obtener esos márgenes. El gráfico se inserta en una ventana creada con tkinter. Con las siguientes instrucciones se observa que se pueden obtener esas coordenadas, pero no veo la manera de poderlas usar en mi programa:
toolbar = NavigationToolbar2Tk(canvas, root)
toolbar.update()
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)
Ojalá me puedan dar luces en ésto.
Un saludo.
José L.