如何从入口(TKINTER)中获取值,以公式使用并将其在标签中打印结果


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文档)

相关内容

  • 没有找到相关文章

最新更新