更新Tkinter文本输入框中的文本

6 投票
2 回答
27693 浏览
提问于 2025-04-18 07:29

下面这段代码是用来接收用户通过表单输入的数据,然后把这个输入的数字乘以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

你可以使用Entrydeleteinsert方法。

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

撰写回答