我正在使用tkinter为GUI编写一个简单的代码。我的问题是,我希望在名为t1的标签中打印一个数字,始终更新为给定的两个条目的总和。当然我不能在条目上使用.get方法,因为我在调用方法时会修复这些值,但是我不知道如何使用其他Intvar构建一个新的(总是更新的)IntVar。
from tkinter import *
window=Tk()
p1_in=StringVar()
p1=Entry(window,textvariable=p1_in)
p2_in=StringVar()
p2=Entry(window,textvariable=p2_in)
t1=Label(window,textvariable=(p1_in+p2_in)) # of course this doesn't work
t1.grid(row=7,column=2)
window.mainloop()
如何使标签t1始终以p1_in + p2_in的总和更新? 我知道他们是StringVar,但输出对我的意图更好,加上我不认为这是主要问题
答案 0 :(得分:1)
您可以使用StringVar的跟踪方法。在值更改后立即调用它。
from tkinter import *
window=Tk()
def calculate(*args):
if p1_in.get() and p2_in.get(): #checks if both are not empty
try:
ans = int(p1_in.get()) + int(p2_in.get())
t1_out.set(str(ans))
except ValueError:
t1_out.set("Enter integers!")
p1_in=StringVar()
p1=Entry(window,textvariable=p1_in)
p1_in.trace("w", calculate)
p2_in=StringVar()
p2=Entry(window,textvariable=p2_in)
p2_in.trace("w", calculate)
t1_out=StringVar()
t1=Label(window,textvariable=t1_out) #also note that used another variable for output
t1.grid(row=7,column=2)
p1.grid(row=5,column=2)
p2.grid(row=6,column=2)
window.mainloop()