如何从 Entry 获取输入并将其设置为 Label 中的文本

How to get input from Entry and set it as the text in a Label

如何从条目小部件获取输入并将其设置为标签小部件中的文本。

我试过以下方法:

l_one = Label(window, text= lambda: self.entry_1.get())
l_one.grid(column = 0, row = 0)

老实说,我认为这行不通,但这是我能想到的。

示例如下:

def callback(*args):
        lbl = Label(root,text=e.get(), width=20).grid(row=1, column=1)    

myLabel = Label(window, text='Reflecting Entry text here...', width=20)
myLabel.grid(row=1, column=1)

e = StringVar()

myEntry = Entry(root, width = 20, textvariable = e)
myEntry.grid(row=1, column=2)

e.set("Type Something here..")
e.trace("w", callback)

无论您在 Entry 小部件中键入什么内容,这都会立即更新 Label 的文本。

如果您希望标签具有在 Entry 小部件中输入的内容,您可以让它们共享 textvariable 属性的相同值:

theVariable = tk.StringVar()
tk.Entry(..., textvariable=theVariable)
tk.Label(..., textvariable=theVariable)

这样一来,您无需执行任何其他操作——无需回调、无需绑定、无需按钮。每当您输入条目小部件时,标签就会自动更新。

我在每个按键事件中都绑定了一个回调函数。在回调函数中,标签的当前内容被按下的最后一个键附加。

唯一的问题是当你按下退格键时,退格键也会打印出来,但还没有执行删除操作。另一个退格键将删除打印的退格字符之前的字符。等等。

因此,从条目小部件中删除所有内容会留下退格字符。我会把它留给你。

另一种解决方案是使用按钮,然后每次单击按钮都会更新您的标签。但我认为你想要的是每次按下一个键时自动更新。

因此,我创建了一个脚本来满足您的问题需求。

这是工作脚本:

#!/usr/bin/env python3
from tkinter import *
from tkinter import ttk

window = Tk()

entry_1 = Entry(window, width=45)
entry_1.grid(column = 0, row = 0)

# appends current content of l_one with the new pressed key value
def callback(event):
    l_one.config(text=entry_1.get() + event.char)

# binds callback to every keypress
entry_1.bind("<Key>", callback)

l_one = Label(window)
l_one.grid(column = 0, row = 1)

window.mainloop()

祝你好运!