2016-04-26 111 views
1

我在Python 2.7中使用Pycharm IDE在一本Macbook中成功运行此代码。我按向上箭头键,event.char不为空,它可以打印出一些东西。但是,在另一台Macbook或Windows系统中,当我按下不是字母的键时,它不能打印出任何东西,我看到的只是“按:”。当我按下字母键时,它运行良好,并打印出诸如“press:A”之类的字母。任何想法是赞赏。使用Tkinter无法打印出“event.char”

 # 
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() 
+0

你可以用'event.keysym' – Pythonista

回答

2

在你的代码中,event是一个Tkinter事件对象。这个对象有属性的短名单,其中涉及到的键盘事件这2个项目(只):

  • char:单字符的字符串,是关键的代码
  • keysym:一字符串是钥匙的象征名

后面的一个显然是你在找什么。

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

  • num

    其它此event Tkinter的对象的attributes按钮编号(仅用于鼠标按钮事件); 1和高达

  • xy:鼠标位置,以像素为单位,相对于所述插件
  • 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() 
2

char只有当按下的键对应一个字符时才包含一个值。如果没有,则需要打印或翻译其他属性之一,例如keysym