在Tkinter中是否有一种绑定键盘组合键的方法,可以在所有键盘布局中都起作用?(通过scancode进行绑定)
例如,我需要绑定 'Control-Z'
,并且在所有布局中都使用键盘左下角的相同物理键,例如:
* 俄语布局,
* 希腊语布局等。
以下是我尝试过的方法:
from Tkinter import *
root=Tk()
def f(event):
print 'undo'
button1=Button(root, text=u'Button')
button1.pack()
button1.bind('<Control-z>', f)
root.mainloop()
对于俄语和希腊语键盘布局,它不起作用。
更新-2:
我在Windows上进行了更多实验,现在通用规则如下:
1)如果语言基于拉丁字符集,则键映射“按值”(德语,法语,Dvorak),以便相同的操作映射到不同的物理键。
2)如果不是(例如俄语,希腊语),则所有主要加速器都被映射“按位置”(以匹配通常标示在同一键上的相应英文字母)。
只有第二种情况需要特别关注。有任何想法是否已经在某些库中实现了吗?
更新-3:
即使没有俄语键盘或俄语版 Windows,也可以简单地复现。
1)开始 ->控制面板 ->区域和语言选项
2)语言 ->详细信息
3)添加俄语语言。
就这样。现在,Alt-Shift将切换到俄语,您将能够输入以下有趣的符号:
再次按下Alt-Shift即可切换回来。
忘记维基百科上关于俄语语音布局的说法吧。它们在今天已经不再使用。至少在俄罗斯内部如此。
所有Windows应用程序(包括wxPython应用程序)都使用Ctrl-я
进行撤销,Ctrl-ч
进行剪切,Ctrl-с
进行复制等等。
<Key>
事件并检查在事件处理程序中是否按下了Ctrl
键(event.state&4> 0
)和z
(event.keycode == 90
)。 - acw1668