Tkinter不区分大小写的绑定案例。

5
我注意到当你在tkinter中绑定键(python3.2 winxp)时,绑定与字母字符的大小写敏感。换句话说,如果大写锁定处于活动状态,则绑定<Control-o>无法在按下Control+o时起作用。这是否意味着我需要为每个不区分大小写的带有字母字符的组合键编写两个绑定?还是有什么方法可以解决这个问题?
谢谢帮助 :)
2个回答

6
是的,你需要进行两个绑定。

2

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

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接