Python-Tkinter-Label未更新

Python-Tkinter-Label未更新,python,tkinter,label,Python,Tkinter,Label,知道为什么leftresult_标签不更新吗?功能似乎正常,但标签不更新。我到处找了,找不到答案。设置“left”值,但标签不变 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="

知道为什么leftresult_标签不更新吗?功能似乎正常,但标签不更新。我到处找了,找不到答案。设置“left”值,但标签不变

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

要使函数完成此任务,您最好使用标签:

leftresult_label = Label(root, textvariable=left)
一旦它是tkinter类变量,tkinter就会注意更改值的时间。单击按钮后

def func1():
    left.set(total.get() - read.get())
    percent.set(int(read.get()*100/total.get()))
left和percent值是tkinter.IntVar()类的实例,它们对小部件(本例中的标签)具有immidate效果,这些值设置为textvariable,就像在条目小部件中一样

以下是完整代码:

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

代码包括进度条。更新_idletasks(),用于保持标签和进度栏运行

from tkinter import *
from tkinter import ttk
root = Tk()
root.title('Counter Test')
root.iconbitmap('IT.ico')
root.geometry("800x400")

def missing():
    while i < 100:                        
        progress1['value'] = i 
        label1.config(text=progress1['value'])
        root.update_idletasks()
        i += 1
        
progress1 = ttk.Progressbar(root, orient=HORIZONTAL, length=250, mode='determinate')
progress1.pack(pady=15)

label1 = Label(root, text="")
label1.pack(pady=15)

button_1 = Button(root, text="Missing", command=missing)
button_1.pack(pady=15)

button_q = Button(root, text="Quit", command=root.destroy)
button_q.pack(pady=15)

root.mainloop() 
从tkinter导入*
从tkinter导入ttk
root=Tk()
root.title('计数器测试')
root.iconbitmap('IT.ico'))
根几何(“800x400”)
def缺少():
当我<100时:
progress1['value']=i
label1.config(text=progress1['value'])
root.update_idletasks()
i+=1
progress1=ttk.Progressbar(根,方向=水平,长度=250,模式=确定)
进度1.包装(pady=15)
label1=标签(根,文本=)
标签1.包装(pady=15)
按钮\u 1=按钮(根,text=“缺失”,命令=缺失)
按钮组(pady=15)
按钮(root,text=“Quit”,command=root.destroy)
按钮组(pady=15)
root.mainloop()

所以要立即更新控件,比如更新标签和树视图元素,这段代码对我来说很有用

window=tk.tk()

window.update_idletasks()