如何从 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()
祝你好运!
如何从条目小部件获取输入并将其设置为标签小部件中的文本。
我试过以下方法:
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()
祝你好运!