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

时间:2015-05-15 16:13:52

标签: python tkinter label tkinter-entry

如何从Entry小部件中获取Input并将其设置为标签小部件中的文本。

我尝试了以下内容:

vet

说实话,我认为它不会起作用,但这是我能想到的。

3 个答案:

答案 0 :(得分:2)

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

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

有了它,你不必做任何其他事情 - 没有回调,没有绑定,没有按钮。无论何时输入条目小部件,标签都会自动更新。

答案 1 :(得分:1)

一个例子如下:

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)

无论您在Label窗口小部件中输入什么内容,都会立即更新Entry的文字。

答案 2 :(得分:0)

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

唯一的问题是当您按下退格键时,还会打印退格字符并且尚未执行删除操作。另一个退格键将删除打印后退字符前的字符。等等。

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

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

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

以下是工作脚本:

#!/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()

祝你好运!