更新Tkinter文本输入框中的文本
下面这段代码是用来接收用户通过表单输入的数据,然后把这个输入的数字乘以2后返回。我的想法是,当用户输入一个数字(比如5),然后按下键盘上的“Enter”键或者点击“计算”按钮时,用户输入数字“5”的地方也应该显示10,除了下面的地方。通常情况下,表单会保留用户输入的数字,但下面的地方会更新并显示10(假设你输入的是5)。
我该如何让表单中的这个地方也更新呢?
(如果我的问题不清楚,请告诉我,这样我可以更好地解释。)
from tkinter import *
def multiplier(*args):
try:
value = float(ment.get())
result.set(value * 2)
except ValueError:
pass
mGui = Tk()
mGui.geometry("300x300+300+300")
ment = StringVar()
result = StringVar()
mbutton = Button (mGui, text = "Calculate", command = multiplier)
mbutton.pack()
mEntry = Entry(mGui, textvariable = ment, text="bebe")
mEntry.pack()
mresult = Label(mGui, textvariable = result)
mresult.pack()
2 个回答
2
你通过 set
方法更新的 StringVar
,就是你在 multiplier
函数里做的事情。那么你想问的是,如何在用户按下回车键时触发 multiplier
的调用,你可以使用:
mGui.bind('<Return>', multiplier)
你还想改变 Entry
中的文本吗?这个问题有点不太清楚。你也可以通过 ment.set
来做到这一点。
10
你可以使用Entry的delete
和insert
方法。
from tkinter import *
def multiplier(*args):
try:
value = float(ment.get())
res = value *2
result.set(res)
mEntry.delete(0, END) #deletes the current value
mEntry.insert(0, res) #inserts new value assigned by 2nd parameter
except ValueError:
pass
mGui = Tk()
mGui.geometry("300x300+300+300")
ment = StringVar()
result = StringVar()
mbutton = Button (mGui, text = "Calculate", command = multiplier)
mbutton.pack()
mEntry = Entry(mGui, textvariable = ment, text="bebe")
mEntry.pack()
mresult = Label(mGui, textvariable = result)
mresult.pack()