2013-10-02 69 views
0

我已經閱讀了一些似乎正在處理這個問題的其他線程,但沒有一個給我修復。有問題的按鈕的代碼是:Tkinter <KP_Enter>綁定無響應

#equals button 
cmd = lambda x='=': self.Click(x) 
self.equals_button = Button(self.MasterFrame, text='=', width=12, 
          height=2, command=cmd) 
self.equals_button.grid(row=4, column=3, columnspan=3, sticky=W+E+N+S, 
         ipadx=2, padx=2, pady=2) 
self.equals_button.bind("<KP_Enter>", cmd) 

我試着在代碼中,但無濟於事(沒有工作)不同階段的按鈕調用.focus_set()。此代碼出現在__init__方法中。在此方法中,我在另一個必需的小部件實例上調用.focus_set()。我也嘗試在主框架上調用此綁定,並在主框架和按鈕本身上同時調用focus_set。這一切都沒有幫助。我沒有收到任何錯誤消息。 當我用鼠標點擊它時,按鈕可以正常工作。它只是不響應按下KP_Enter。我希望它做到這一點。

+1

綁定「」是否適用於其他窗口小部件?也許這個名字是錯誤的。你嘗試過「」嗎? – Kevin

+0

僅當我將其綁定到我的根時才產生響應。它在我的Entry小部件上用進行響應。當'='被傳遞給cmd時,它會導致輸出到Entry小部件,self.screenFrame – Totem

+1

這可能是因爲當你綁定時,傳遞給你的lambda的第一個參數將是Event對象。也許你應該做'cmd = lambda事件,x ='=':self.Click(x)'。甚至只是'cmd = lambda事件:self.Click('=')'。 – Kevin

回答

0

在凱文的幫助下,我解決了這個問題。綁定到<KP_Enter>不起作用,但綁定,而不是<Return>響應,但仍然無法正常工作。所以,我沒有綁定self.equals_button,而是將Entry小部件本身綁定到<Return>,這樣它只在與.focus_set()關注時才響應按鍵。 Entry小部件中的數據被用作參數.bind() params中的參數。所以現在我有相同的功能綁定,首先到Entry小部件,當我按Enter(這包括在我的系統上鍵盤輸入,這是我想要的),並再次在小部件實例化語句(button=Button(etc.etc.command=myfunc)),讓我有通過點擊鼠標並按下鍵盤輸入鍵可實現相同的功能。再次感謝凱文。