我正在编写的程序中没有快捷方式,而且我发现它有很大一部分是无法启用的。 我开始认为它可以与操作系统或桌面相关,所以我告诉你我在KDE下运行Fedora Linux。
这是我用来探索我的密钥问题的小编:
#!/usr/bin/env python
from Tkinter import *
root = Tk()
text=Text(root)
text.pack(side=LEFT, fill=BOTH, expand = YES)
def key(event):
print "pressed", repr(event.char)
def testfun(a):
print"test worked, pressed %s: control key %s" % (repr(event.char),str(a))
text.bind("<Key>", key)
for i in range(10):
text.bind('<Control-'+str(i)+'>', lambda event,arg=i:testfun(arg,event))
mainloop()
(我的问题只有ctrl-number快捷方式,但让我们从这里开始)。
我的问题:Ctrl-6 ... Ctrl-0被截获,但我找不到一种方法来制作Ctrl-1..Ctrl-5!
1..6的示例输出是:
1:按'1'
2:按''
3:按'\ x1b'
4:按'\ x1c'
5:按'\ x1d'
6:测试工作,按'\ x1e':控制键6
我还尝试将快捷方式绑定到root,并且还尝试返回'break',但没有任何效果。
你有什么想法吗?
谢谢!
答案 0 :(得分:4)
以下是对您的代码进行修复的一些修补程序:
首先,key
函数应使用keysym
成员而不是char
的{{1}}:
event
然后你的绑定函数应该只使用def key(event):
print "pressed", repr(event.keysym)
函数,不需要那个lambda。你也应该绑定key
,而不是<Control-Key-1>
,(后者指的是缪斯按钮),所以:
<Control-1>
你可以删除该行:
for i in range(10):
text.bind('<Control-Key-'+str(i)+'>', key)
你也可以像这样绑定小写字母:
#text.bind("<Key>", key)
希望这有帮助。