Pregunta

Necesito que se ejecute un comando mientras se mantenga presionado el botón izquierdo del mouse.

¿Fue útil?

Solución

Mire la tabla 7-1 de los documentos.Hay eventos que especifican movimiento mientras se presiona el botón, <B1-Motion>, <B2-Motion> etc.

Si no estás hablando de un evento de presionar y mover, entonces puedes comenzar a realizar tu actividad en <Button-1> y deja de hacerlo cuando recibas <B1-Release>.

Otros consejos

Si desea que "algo suceda" sin que intervengan eventos (es decir:sin que el usuario mueva el mouse o presione ningún otro botón), su única opción es realizar una encuesta.Establece una bandera cuando se presiona el botón, desactívala cuando se suelta.Mientras realiza el sondeo, verifique la bandera y ejecute su código si está configurado.

Aquí hay algo para ilustrar el punto:

import Tkinter

class App:
    def __init__(self, root):
        self.root = root
        self.mouse_pressed = False
        f = Tkinter.Frame(width=100, height=100, background="bisque")
        f.pack(padx=100, pady=100)
        f.bind("<ButtonPress-1>", self.OnMouseDown)
        f.bind("<ButtonRelease-1>", self.OnMouseUp)

    def do_work(self):
        x = self.root.winfo_pointerx()
        y = self.root.winfo_pointery()
        print "button is being pressed... %s/%s" % (x, y)

    def OnMouseDown(self, event):
        self.mouse_pressed = True
        self.poll()

    def OnMouseUp(self, event):
        self.root.after_cancel(self.after_id)

    def poll(self):
        if self.mouse_pressed:
            self.do_work()
            self.after_id = self.root.after(250, self.poll)

root=Tkinter.Tk()
app = App(root)
root.mainloop()

Sin embargo, el sondeo generalmente no es necesario en una aplicación GUI.Probablemente solo te importe lo que sucede mientras se presiona el mouse. y Se esta moviendo.En ese caso, en lugar de la función de encuesta, simplemente vincule do_work a un <B1-Motion> evento.

Use los eventos de movimiento / movimiento del mouse y compruebe las banderas del modificador.Los botones del mouse aparecerán allí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top