2016-09-22 4 views
0

Irgendwelche Ideen, warum das Label linkesult_label nicht aktualisiert wird? Die Funktion scheint zu funktionieren, aber das Etikett wird nicht aktualisiert. Ich habe überall gesucht und kann keine Antwort finden. Der Wert 'left' wird gesetzt, aber die Beschriftung ändert sich nicht.Python - Tkinter - Etikett wird nicht aktualisiert

from tkinter import * 

root = Tk(className="Page Calculator") 

read = IntVar() 

total = IntVar() 

left = IntVar() 

read.set(1) 

total.set(1) 

left.set(1) 

read_label = Label(root,text="Pages Read:") 
read_label.grid(column=1, row=1) 

total_label = Label(root,text="Total Pages:") 
total_label.grid(column=1, row=2) 

read_entry = Entry(root,textvariable=read) 
read_entry.grid(column=2, row=1) 

total_entry = Entry(root,textvariable=total) 
total_entry.grid(column=2, row=2) 

def func1(): 
    left.set(total.get() - read.get()) 
    print(left.get()) 

calculate_button = Button(root,text="Calculate",command= func1) 
calculate_button.grid(column=2, row=3) 

percenet_label = Label(root,text="Percent Finished:") 
percenet_label.grid(column=1, row=4) 

left_label = Label(root,text="Pages Left:") 
left_label.grid(column=1, row=5) 

percenetresult_label = Label(root,text=left.get()) 
percenetresult_label.grid(column=2, row=4) 

leftresult_label = Label(root,text="") 
leftresult_label.grid(column=2, row=5) 

root.mainloop() 

Antwort

1

Um die Funktion den Job machen tun, Sie lieber Ihr Label haben würde:

leftresult_label = Label(root, textvariable=left) 

Sobald es tkinter Klassenvariable ist, nimmt tkinter kümmern uns um, wenn Sie den Wert ändern. Sobald Sie auf die Schaltfläche klicken,

def func1(): 
    left.set(total.get() - read.get()) 
    percent.set(int(read.get()*100/total.get())) 

links und Prozentwerte, die Instanzen von tkinter.IntVar sind() der Klasse haben immidiate Effekt auf Widgets (Etiketten in diesem Fall), wo diese Werte als textvariable eingestellt sind, wie Sie gerade habe es bei Entry-Widgets. Hier

ist voll Code:

from tkinter import * 

root = Tk(className="Page Calculator") 
read = IntVar() 
total = IntVar() 
left = IntVar() 
percent = IntVar() 

read.set(1) 
total.set(1) 
left.set(1) 
percent.set(1) 

def func1(): 
    left.set(total.get() - read.get()) 
    percent.set(int(read.get()*100/total.get())) 

read_label = Label(root,text="Pages Read:") 
read_label.grid(column=1, row=1) 

read_entry = Entry(root,textvariable=read) 
read_entry.grid(column=2, row=1) 

total_label = Label(root,text="Total Pages:") 
total_label.grid(column=1, row=2) 

total_entry = Entry(root,textvariable=total) 
total_entry.grid(column=2, row=2) 


calculate_button = Button(root,text="Calculate",command= func1) 
calculate_button.grid(column=2, row=3) 

percenet_label = Label(root,text="Percent Finished:") 
percenet_label.grid(column=1, row=4) 

left_label = Label(root,text="Pages Left:") 
left_label.grid(column=1, row=5) 

percenetresult_label = Label(root,textvariable=percent) 
percenetresult_label.grid(column=2, row=4) 

leftresult_label = Label(root,textvariable=left) 
leftresult_label.grid(column=2, row=5) 

root.mainloop() 
+0

Vielen Dank! es funktionierte! :) – GregLahaye

Verwandte Themen