tkinter快捷方式无法启用

时间:2012-12-14 10:26:37

标签: python tkinter keyboard-shortcuts

我正在编写的程序中没有快捷方式,而且我发现它有很大一部分是无法启用的。 我开始认为它可以与操作系统或桌面相关,所以我告诉你我在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',但没有任何效果。

你有什么想法吗?

谢谢!

1 个答案:

答案 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)

希望这有帮助。