2016-09-22 344 views
0

leftresult_labelラベルが更新されない理由は何ですか?関数は動作しているように見えますが、ラベルは更新されません。私はどこにでも見て、答えを見つけることができません。 'left'の値は設定されますが、ラベルは変更されません。機能を作るために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のは、あなたが値を変更するときには気になります。あなたがボタンをクリックすると、()クラスtkinter.IntVarのインスタンスである

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

左とパーセント値は、それらの値が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

関連する問題