2016-09-22 153 views
0

任何想法爲什麼leftresult_label標籤不更新?該功能似乎工作,但標籤不更新。我到處尋找,找不到答案。 '左'值被設置,但標籤不會改變。Python - Tkinter - 標籤不更新

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() 

回答

1

爲了使功能做的工作,你寧願有你的標籤:

leftresult_label = Label(root, textvariable=left) 

一旦它的Tkinter類變量,Tkinter的需要,當你改變值約護理。一旦你點擊該按鈕,

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

左和百分比值,它是tkinter.IntVar的情況下()類對其中那些值被設置爲textvariable部件(在這種情況下標籤)immidiate效果,就像你在Entry小部件中有它。

這裏是全碼:

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

非常感謝!有效! :) – GregLahaye