Solución:
Puedes unirte a <Double-Button-1>
:
widget.bind('<Double-Button-1>', handler)
También hay <Button-1>
para clics normales del mouse y <Triple-Button-1>
para un triple clic del mouse.
Para obtener más información sobre enlaces en Tkinter, consulte Eventos y enlaces.
Debe darse cuenta de que existe una jerarquía para todos los widgets, y esto significa que para cada widget en el que haga clic, son posibles varias vinculaciones. Si no anula la acción predeterminada, se llama al controlador predeterminado de cada jerarquía, comenzando en el nivel más bajo (como su Listbox) y subiendo hasta el widget Tk () o Toplevel (). Para usted, dado que desea imprimir solo cuando se hace clic en un elemento del cuadro de lista, puede enlazar al widget del cuadro de lista, de la siguiente manera:
listboxWidget.bind('<Double-Button-1>', listboxWidget_leftclick_handler)
Entonces, cuando ingrese al def listboxWidget_leftclick_handler(event)
función, no tiene que comprobar el valor event.widget para ver si es el nombre de su widget Listbox. Pero también puede verificar en un nivel superior (vincular un controlador a un widget de nivel superior) y verificar event.widget para ver en qué widget se hizo clic.
También tenga en cuenta que la única forma de evitar que se active toda la jerarquía de controladores de eventos es mediante el uso de un return 'break'
desde su controlador personalizado, pero normalmente solo necesita hacer esto si los controladores posteriores corrompen lo que ha hecho su controlador personalizado.
información adicional sobre los controladores predeterminados
La otra parte que dejé fuera es que también hay un controlador “predeterminado” para la mayoría de los eventos. Si vincula a su propio controlador, una vez que esté terminado, si no lo hace return 'break'
, el controlador predeterminado se llamará a continuación.
Por ejemplo, digamos que desea convertir su propio cuadro de entrada en una entrada de contraseña. De forma predeterminada, cuando escribe caracteres alfanuméricos cuando la Entrada tiene el foco (lo que significa que recibe una entrada del teclado), los caracteres aparecerán en la Entrada. Puedes unir
myEntry.bind('<KeyPress>', passworder)
dónde contraseña (evento) es su controlador personalizado que captura el evento que contiene su carácter ingresado y luego genera un asterisco en la Entrada. Pero, si no usa un return "break"
al final de su controlador, el widget de Entrada todavía verá ese carácter que no quería que se mostrara, porque una vez que su controlador haya terminado de insertar el asterisco, el controlador predeterminado simplemente insertará el carácter escrito (como lo haría normalmente) . Pero, si haces el return 'break'
, no se llamará al controlador predeterminado y los caracteres escritos no aparecerán en la entrada.