2011-08-29 43 views
2

當我將事件綁定到條目並讀取內容時,該更改以某種方式滯後。我想「動態更新」另一個條目,只要條目1發生變化,就會立即顯示計算各條目內容的結果。但不知何故,變化不會立即被識別出來,只有前面的那個。不知道問題是否清楚: 如果我進行n次更改,則會識別最多n-1的更改。如果號碼是1000,我按空格鍵兩次,entry_1.get()將產生100,而不是10。希望你明白我的意思了:)將<Key>綁定到Tkinter中的條目

代碼段(簡體):

self.entry_1.bind('<Key>',lambda d: self.update()) 

def update(self): 
    success=True 
    try: 
     float(self.entry_1.get()) 
     float(self.entry_1.get()) 
    except ValueError: success=False 
    if success: 

     self.entry_3.delete(0,"end") 
     x=(float(self.entry_1.get())*float(self.entry_2.get()) 
     self.entry_3.insert("end", "%g" %x) 

什麼可能是這個原因?

+0

可能重複(HTTP [如何綁定在Tkinter的文本小自事件發生後,將通過文本控件綁定?]://計算器。 com/questions/3501849/how-to-bind-self-events-in-tkinter-text-widget-after-it-will-binded-by-text-widge) –

回答

3

原因是由於處理事件的順序。該順序由小部件的「綁定標籤」(或綁定標籤)定義。默認情況下,訂單是小部件,類,頂層,「全部」。例如,如果您在窗口小部件,類上,包含窗口小部件的頂級窗口上以及特殊情況「全部」上有綁定,綁定將按該順序觸發。

我給了這個問題的冗長的書面記錄在this answer的問題How to bind self events in Tkinter Text widget after it will binded by Text widget?

+0

輝煌,非常感謝! – Jakob

相關問題