gpt4 book ai didi

python - 无法启用 tkinter 快捷方式

转载 作者:行者123 更新时间:2023-11-28 22:58:23 25 4
gpt4 key购买 nike

我正在编写的程序中的快捷方式用完了,而且其中有很大一部分我发现无法启用。我开始认为它可能与操作系统或桌面相关,所以我告诉你我在 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': control key 6

我还尝试将快捷方式绑定(bind)到 root,还尝试了 return 'break',但没有任何效果。

你有什么想法吗?

谢谢!

最佳答案

以下是对您的代码进行的一些修复,以使其正常工作:

首先,key函数应使用 keysym成员而不是 charevent :

def key(event):
print "pressed", repr(event.keysym)

那么你的绑定(bind)函数应该只使用 key函数,不需要那个 lambda。你也应该绑定(bind) <Control-Key-1> , 不是 <Control-1> ,(后者指的是缪斯按钮),所以:

for i in range(10):
text.bind('<Control-Key-'+str(i)+'>', key)

你可以擦掉这条线:

#text.bind("<Key>", key)

你也可以像这样绑定(bind)小写字母:

for i in range(ord('a'), ord('z') + 1):
text.bind('<Control-Key-'+chr(i)+'>', key)

希望这对您有所帮助。

关于python - 无法启用 tkinter 快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13876809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com