from Tkinter import *
top=Tk()
用户将输入的第一个值
A = Entry(top)
A.grid(row=1, column=1)
第二个值B,用户还输入
B = Entry(top)
B.grid(row=1, column=2)
计算 - 现在我想添加这些值(最好是用小数点的值)
A1=float(A.get())
B1=float(B.get())
C1=A1+B1
结果 - 我希望Python计算结果并在输入前两个值
时向用户显示。C = Label(textvariable=C1)
C.grid(row=1, column=3)
top.mainloop()
首先,欢迎使用stackoverflow,好工作 - 您的代码(主要是)您想要做的一切!时机只是偏离 - 您创建对象并获取值,但是该值尚未被用户输入。
要解决这个问题,您需要将.get()
的s放在一个函数中,并且应该在每个函数之后使用set()
的实际文本变量(如果您只使用C1 =(float),您将结束向后制作新的浮子,以便标签没有指向正确的浮标)。
(setup... )
B.grid(...)
C1 = Tkinter.StringVar()
C = Label(textvariable=C1) # Using a StringVar will allow this to automagically update
def setC():
A1=float(A.get())
B1=float(B.get())
C1.set(str(A1+B1))
此外,您需要设置此功能,因此它不仅仅是"立即运行程序"。这样做的简单方法是将函数调用本身.after()
(以毫秒为单位)。
def setC():
# Body above
top.after(1000, setC) # Call setC after 1 second, so it keeps getting called.
setC() # You have to call it manually once, and then it repeats.
更新的更高级和有效的方法涉及事件和绑定(每次更改A1或B1时绑定setC()
要发射),但是对此的文字很长,所以我会给您那个提示,并将您发送给一些关于这一点的文档。(无论如何,EFFBOT是好的Tkinter文档)