/ / tkinter case insensitive bind - python, tkinter, bind, distingue entre mayúsculas y minúsculas

tkinter case insensitive bind - python, tkinter, bind, distingue entre mayúsculas y minúsculas

He notado que cuando vincula teclas en tkinter (python3.2 winxp), los enlaces distinguen entre mayúsculas y minúsculas con los caracteres de las letras. En otras palabras, enlace <Control-o> no funciona si presiona Control + o si las mayúsculas bloqueanestá activo. ¿Significa que necesito escribir dos enlaces para cada combinación de teclas no sensible a mayúsculas y minúsculas con caracteres de letras? ¿O hay alguna manera de resolver esto?

Gracias por la ayuda :)

Respuestas

2 para la respuesta № 1

Sí, tienes que hacer dos fijaciones.


1 para la respuesta № 2

Debe vincularse dos veces en su caso, pero no necesita pensar en ello una vez que escriba una función inteligente. Definamos una función que haga esto por nosotros.

def bind_(widget, all_=False, modifier="", letter="", callback=None, add="",):
if modifier and letter:
letter = "-" + letter
if all_:
widget.bind_all("<{}{}>".format(modifier,letter.upper()), callback, add)
widget.bind_all("<{}{}>".format(modifier,letter.lower()), callback, add)
else:
widget.bind("<{}{}>".format(modifier,letter.upper()), callback, add)
widget.bind("<{}{}>".format(modifier,letter.lower()), callback, add)

Y luego úsalo así:

bind_(text_widget, modifier="Control", letter="s", callback=save)
bind_(text_widget, modifier="Control-Shift", letter="s", callback=save_as)
bind_(text_widget, modifier="", letter="r", callback=print_something)