tkinter регистронезависимое связывание - PullRequest
2 голосов
/ 13 сентября 2011

Я заметил, что когда вы связываете ключи в tkinter (python3.2 winxp), привязки чувствительны к регистру буквенных символов. Другими словами, привязка <Control-o> не работает, если вы нажимаете Control + o, если активна блокировка букв. Означает ли это, что мне нужно написать две привязки для каждой нечувствительной к регистру комбинации клавиш с буквенными символами? Или есть какой-то способ решить это?

Спасибо за помощь:)

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

Да, вы должны сделать две привязки.

1 голос
/ 17 июля 2014

Вы должны связываться дважды в вашем случае, но вам не нужно думать об этом, когда вы пишете умную функцию. Давайте определим функцию, которая делает это для нас.

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)

А затем используйте это так:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...