2015-03-22 4 views
1

Вот мой код до сих пор:Как обновить виджет Tkinter Label?

from tkinter import * 

root = Tk() 

num1 = IntVar() 
num2 = IntVar() 

total = IntVar() 
total.set(num1.get() + num2.get()) 

entry1 = Entry(root, textvariable = num1) 
entry1.pack() 

entry2 = Entry(root, textvariable = num2) 
entry2.pack() 

total_label = Label(root, textvariable = total) 
total_label.pack() 

То, что я пытаюсь сделать, это иметь total_label всегда показывают сумму num1 и num2. Однако, когда я запускаю код, total_label остается 0.

Как мне total_label показать сумму num1 и num2?

ответ

4

Вы можете использовать трассировку num1 и num2:

from tkinter import * 

root = Tk() 

num1 = IntVar() 
num2 = IntVar() 
total = IntVar() 
def update_total(*severalignoredargs): 
    total.set(num1.get() + num2.get()) 

num1.trace('w',update_total) 
num2.trace('w',update_total) 


entry1 = Entry(root,textvariable=num1) 
entry1.pack() 

entry2 = Entry(root,textvariable=num2) 
entry2.pack() 

total_label = Label(root,textvariable=total) 
total_label.pack() 

root.mainloop() 
+0

Спасибо! Я не знал о функции «trace», и мне придется изучить ее другие виды использования. –

Смежные вопросы