更新标签保留以前的文本
Updating label keeps previous text
在我制作的程序中,用户按下回车键,然后输入的文本在程序中显示为标签。所以标签不断更新,然后写在下一行。问题是在文本框中,用户键入的前一行保留在那里,这意味着您必须继续手动删除文本框中的字符串以编写新行。我怎样才能让你从一个清除的文本框开始?此外,回车按钮有效,但似乎当我点击 "Return" 按钮时它给了我一个错误:
TypeError:evaluate() 缺少 1 个必需的位置参数:'event'
代码如下:
from tkinter import *
window = Tk()
window.geometry("200x300")
def evaluate(event):
thetext = StringVar()
labeloutput = Label(app, textvariable = thetext)
n = e.get()
thetext.set(n)
labeloutput.grid()
app = Frame(window)
app.pack()
e = Entry(window)
e.pack()
b= Button(window, text="Return", command=evaluate)
b.pack()
window.bind("<Return>", evaluate)
mainloop()
由于您将 evaluate
绑定为回调并将其用作按钮命令,因此当您在按钮中使用它时,您必须使用 lambda 并将 None
传递给事件。 event
由于绑定需要参数,但是当您从按钮单击调用它时没有事件,所以只需传递 None
即可消除错误。您可以通过执行 entry.delete(0, 'end')
.
来删除
from tkinter import *
window = Tk()
window.geometry("200x300")
def evaluate(event):
thetext = StringVar()
labeloutput = Label(app, textvariable = thetext)
n = e.get()
thetext.set(n)
labeloutput.grid()
e.delete(0, 'end') # Here we remove text inside the entry
app = Frame(window)
app.pack()
e = Entry(window)
e.pack()
b = Button(window, text="Return", command=lambda: evaluate(None)) # Here we have a lambda to pass None to the event
b.pack()
window.bind("<Return>", evaluate)
mainloop()
当然,如果你想防止使用 lambda,你必须创建一个函数来处理键绑定,并为按钮单击创建一个单独的函数。
在我制作的程序中,用户按下回车键,然后输入的文本在程序中显示为标签。所以标签不断更新,然后写在下一行。问题是在文本框中,用户键入的前一行保留在那里,这意味着您必须继续手动删除文本框中的字符串以编写新行。我怎样才能让你从一个清除的文本框开始?此外,回车按钮有效,但似乎当我点击 "Return" 按钮时它给了我一个错误:
TypeError:evaluate() 缺少 1 个必需的位置参数:'event'
代码如下:
from tkinter import *
window = Tk()
window.geometry("200x300")
def evaluate(event):
thetext = StringVar()
labeloutput = Label(app, textvariable = thetext)
n = e.get()
thetext.set(n)
labeloutput.grid()
app = Frame(window)
app.pack()
e = Entry(window)
e.pack()
b= Button(window, text="Return", command=evaluate)
b.pack()
window.bind("<Return>", evaluate)
mainloop()
由于您将 evaluate
绑定为回调并将其用作按钮命令,因此当您在按钮中使用它时,您必须使用 lambda 并将 None
传递给事件。 event
由于绑定需要参数,但是当您从按钮单击调用它时没有事件,所以只需传递 None
即可消除错误。您可以通过执行 entry.delete(0, 'end')
.
from tkinter import *
window = Tk()
window.geometry("200x300")
def evaluate(event):
thetext = StringVar()
labeloutput = Label(app, textvariable = thetext)
n = e.get()
thetext.set(n)
labeloutput.grid()
e.delete(0, 'end') # Here we remove text inside the entry
app = Frame(window)
app.pack()
e = Entry(window)
e.pack()
b = Button(window, text="Return", command=lambda: evaluate(None)) # Here we have a lambda to pass None to the event
b.pack()
window.bind("<Return>", evaluate)
mainloop()
当然,如果你想防止使用 lambda,你必须创建一个函数来处理键绑定,并为按钮单击创建一个单独的函数。