2
我注意到,当你在tkinter(python3.2 winxp)中绑定键时,绑定对字母字符是区分大小写的。换句话说,如果大写锁定处于活动状态,则按Ctrl + o时,绑定<Control-o>
不起作用。这是否意味着我需要为每个不区分大小写的字母组合键写两个绑定?或者有什么办法解决这个问题?tkinter不区分大小写的绑定
感谢您的帮助:)
我注意到,当你在tkinter(python3.2 winxp)中绑定键时,绑定对字母字符是区分大小写的。换句话说,如果大写锁定处于活动状态,则按Ctrl + o时,绑定<Control-o>
不起作用。这是否意味着我需要为每个不区分大小写的字母组合键写两个绑定?或者有什么办法解决这个问题?tkinter不区分大小写的绑定
感谢您的帮助:)
是的,你必须做两个绑定。
在你的情况下,你必须绑定两次,但是一旦你编写了一个聪明的函数,你不需要考虑它。我们来定义一个为我们做这个的函数。
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)