es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Almacenando dos eventos de mouse en Python

Actualmente estoy utilizando matplotlib y necesito guardar las coordenadas de dos clics izquierdos en un gráfico. (Estoy calculando una integral entre los dos puntos seleccionados). De alguna manera, después de horas y horas de intentarlo, no he logrado guardar los dos clics. ¿Alguien aquí sabe cómo hacerlo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar el módulo matplotlib.widgets para capturar eventos del mouse y guardar las coordenadas de dos clicks izquierdos en un gráfico. Aquí tienes un ejemplo de código:

    import matplotlib.pyplot as plt
    from matplotlib.widgets import Cursor
    
    coords = []
    
    def onclick(event):
        global coords
        if event.button == 1:
            coords.append((event.xdata, event.ydata))
            if len(coords) == 2:
                fig.canvas.mpl_disconnect(cid)
                plt.close()
    
    fig, ax = plt.subplots()
    ax.plot([1, 2, 3], [4, 5, 6])
    cid = fig.canvas.mpl_connect('button_press_event', onclick)
    cursor = Cursor(ax, useblit=True, color='red', linewidth=1)
    plt.show()
    
    # La variable coords contendrá las coordenadas x e y de los dos clicks izquierdos
    print(coords)
    

    En este ejemplo, creamos una figura de matplotlib con un gráfico único. Luego utilizamos la función mpl_connect del lienzo de la figura para registrar una función de devolución de llamada (onclick) para los eventos de presión de los botones del mouse. La función onclick se llama cada vez que se presiona un botón del mouse en la figura. Verificamos si se utilizó el botón izquierdo del mouse (event.button == 1) y, en ese caso, añadimos la tupla (event.xdata, event.ydata) a la lista global coords. Una vez que se han registrado dos clicks, desconectamos la función de devolución de llamada del lienzo y cerramos la figura.

    Ten en cuenta que también creamos un widget Cursor para mostrar las coordenadas x e y del cursor del mouse. Esto es opcional y se puede eliminar si no es necesario.

    ¡Espero que esto te ayude a resolver tu problema!

Comments are closed.