2014-03-28 39 views
6

我正在開發一個程序來控制一臺機器,只有一個鍵盤連接。我正在使用Python 2.7和Tkinter 8.5。我正在使用OptionMenu以允許用戶在機器上進行設置。如何獲得箭頭鍵,並在Linux中的鍵盤上輸入鍵來表現得像Windows7

當我在Windows下運行時,我可以使用鍵盤上的箭頭鍵遍歷下拉列表,然後使用小鍵盤輸入選擇選項。這不適用於Linux(Debian Wheezy)。

如何將KP_Enter綁定爲返回鍵?

import Tkinter 

def c(self, event): 
    event.b[".keysym"] = "<<space>>" 
    print "button invoked" 

t = Tkinter.Tk() 

b = Tkinter.OptionMenu(t, ".500", ".510", ".520", 
         ".550", ".560", ".570", ".580", command=c) 
t.bind("<KP_Enter>", c) 
e = Tkinter.Entry() 
e.pack() 
b.pack(anchor=Tkinter.E) 

t.mainloop() 
+0

你試過創建一個綁定到''嗎?您的代碼僅在''上顯示綁定。 –

+0

我發佈了錯誤的代碼,但它不適用於KP_Enter。我一直在研究並使用以下方法綁定KP_up和KP_down箭頭def focus_next_button(event): event.widget.tk_focusNext()。focus() return(「break」) master.bind(「」,focus_next_button ) 高清focus_prev_button(事件): event.widget.tk_focusPrev()對焦() 回報( 「破發」) master.bind( 「」,focus_prev_button) – pglitt

+0

布萊恩我想,如果我知道一種方法,我可以工作使tk.focus_next在下拉列表中工作。我也在考慮改變tkinter模塊中的綁定,但我不確定這是否是一個好主意。 – pglitt

回答

0

有了這個腳本(從here),它應該很容易識別,當你按任意鍵由Tkinter的觸發按鍵事件,無論是<Return><KP_Enter>,或(不知爲什麼,也許你的鍵盤有一個有趣的映射)別的東西。

只需在按下所需按鈕時查看控制檯輸出,並在實際代碼中使用該按鍵事件名稱即可。

import Tkinter 

def callback(e): 
    print e.keysym 

w = Tkinter.Frame(width=512, height=512) 
w.bind("<KeyPress>", callback) 
w.focus_set() 
w.pack() 
w.mainloop()