无法使用Tkinter打印出“event.char”

时间:2016-04-26 05:11:03

标签: python tkinter

我在Python 2.7中使用Pycharm IDE在一台Macbook中成功运行了这个。我按向上箭头键,event.char不为null,它可以打印出来的东西。但是,在其他Macbook或Windows系统中,当我按下非字母的键时,它无法打印出任何内容,我看到的只是“按:”。当我按下字母键时,它工作正常,并打印出像“按:A”这样的字母。任何想法都表示赞赏。

     #
from Tkinter import *
#Entry
def printkey(event):
    print('press:' + event.char)
#
root = Tk()
#input
entry = Entry(root)
#
entry.bind('<Key>', printkey)
#
entry.pack()
root.mainloop()

2 个答案:

答案 0 :(得分:3)

在您的代码中,event是一个Tkinter事件对象。此对象有一个简短的属性列表,其中包括与键盘事件相关的2个属性(仅限):

  • char :单字符字符串,是关键代码
  • keysym :一个字符串,它是关键的符号名称

后一个显然是你在寻找的。

你会在这里找到a list enumerating the keysyms that will be recognized by Tk

event Tkinter对象的其他attributes

  • num :按钮编号(仅适用于鼠标按钮事件); 1及以上
  • x y :相对于小组件左上角的鼠标位置(以像素为单位)
  • x_root y_root :相对于屏幕左上角的鼠标位置(以像素为单位)
  • widget :发生事件的小部件。

所以你的代码现在应该是这样的:

from Tkinter import *
#Entry
def printkey(event):
    print('press:' + event.keysym)
#
root = Tk()
#input
entry = Entry(root)
#
entry.bind('<Key>', printkey)
#
entry.pack()
root.mainloop()

答案 1 :(得分:2)

当按下的键对应于一个字符时,

char仅包含一个值。如果没有,则需要打印或翻译其他属性,例如keysym