2016-04-26 81 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