2016-11-10 62 views
1

所以我對tkinter有點新穎,並且正在製作一個gui。我遇到的問題之一是當我從一個入口小部件獲得一個值時。在我對它進行了一些算術運算後,我無法獲得與該條目小部件相關的標籤更新。例如通過輸入和不斷更新標籤來執行輸入任務

var = tk.StringVar 
entry1 = tk.Entry(root, textvariable = var) 
entry1.pack() 
then do something with var 
label1 = tk.Label(root, text = var) 
label1.pack() 

我問了這個問題之前環視四周,我發現的是連接變量。我試過,但它仍然不會在第一次後更新。

我怎麼會得到標籤來更新每次輸入新的值時輸入。如果輸入了2,則會顯示4。那麼如果我輸入了5,那麼標籤應該自動更新,並且10應該被刪除。在這種情況下,我只是乘以2。標籤應該更新,直到我關閉程序。

多虧了有很多的麻煩搞清楚了這一點任何幫助表示讚賞

+0

要將標籤與條目鏈接起來,請在初始化'label1'時使用'textvariable = var'而不是'text = var'。但是,這種鏈接不符合您的要求,因爲標籤只是顯示您在條目中輸入的內容,而不進行任何處理。更好地使用'entry1.bind(...)'綁定'Return'鍵來調用處理條目的函數,然後更新標籤文本。 – acw1668

回答

0
def enter_hit(event): 
    do_something_with(var.get()) 

var = tk.StringVar 
entry1 = tk.Entry(root, textvariable = var) 
entry1.pack() 
label1 = tk.Label(root, text = var) 
label1.pack() 
entry1.bind("<Return>",enter_hit) 

當你按下回車鍵上entry1,然後調用enter_hit。然後var它的文本可以被獲取,並且你可以用它來做任何事情來影響label1

如果這不適合您,並且您希望它改變輸入字符的時刻,請嘗試跟蹤。

def traced_event(event): 
    do_something_with(var.get()) 

var = tk.StringVar 
entry1 = tk.Entry(root, textvariable = var) 
entry1.pack() 
label1 = tk.Label(root, text = var) 
label1.pack() 
var.trace("w", traced_event) 
+1

ohh好吧謝謝我試圖弄清楚這一點,但永遠得不到我想要的。這非常糟糕,只能重寫一些代碼。 – doge

+1

不要忘記@doge,你需要在那裏有變量'event',以便傳遞的信息有一個地方可以去,否則會發生錯誤。 –