在Tkinter中,如何在按钮按下后清空Entry小部件?
我想在用户按下按钮后,清空Tkinter中的Entry
小部件。
我试着用ent.delete(0, END)
来实现,但出现了一个错误,提示字符串没有delete这个属性。
这是我的代码,在real.delete(0, END)
这一行出现了错误:
secret = randrange(1,100)
print(secret)
def res(real, secret):
if secret==eval(real):
showinfo(message='that is right!')
real.delete(0, END)
def guess():
ge = Tk()
ge.title('guessing game')
Label(ge, text="what is your guess:").pack(side=TOP)
ent = Entry(ge)
ent.pack(side=TOP)
btn=Button(ge, text="Enter", command=lambda: res(ent.get(),secret))
btn.pack(side=LEFT)
ge.mainloop()
13 个回答
5
real
获取的是 ent.get()
的值,这个值其实就是一个字符串。它并不知道这个字符串是从哪里来的,也无法对这个输入框(widget)进行任何操作。
与其使用 real.delete()
,不如直接在输入框(entry widget)上调用 .delete()
方法:
def res(ent, real, secret):
if secret == eval(real):
showinfo(message='that is right!')
ent.delete(0, END)
def guess():
...
btn = Button(ge, text="Enter", command=lambda: res(ent, ent.get(), secret))
18
我不太明白你的问题。从这个链接来看,似乎在你调用删除操作之后,你只需要进行一次赋值。要在这个小部件中添加文本,可以使用插入方法。如果你想替换当前的文本,可以先调用删除,然后再插入新的文本。
e = Entry(master)
e.pack()
e.delete(0, END)
e.insert(0, "")
你能多发一点代码吗?
99
在浏览了一下Tkinter的入门介绍后,我写出了下面的代码。这段代码的功能很简单,就是显示一个文本框,当你点击"清除文本"
按钮时,它会把文本框里的内容清空:
import tkinter as tk
class App(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master, height=42, width=42)
self.entry = tk.Entry(self)
self.entry.focus()
self.entry.pack()
self.clear_button = tk.Button(self, text="Clear text", command=self.clear_text)
self.clear_button.pack()
def clear_text(self):
self.entry.delete(0, 'end')
def main():
root = tk.Tk()
App(root).pack(expand=True, fill='both')
root.mainloop()
if __name__ == "__main__":
main()