在您的情况下,您需要绑定两次,但是只要编写一个聪明的函数,您就不需要考虑这个问题。让我们定义一个可以为我们执行此操作的函数。
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)