I’m trying to clear the Entry
widget after the user presses a button using Tkinter.
I tried using ent.delete(0, END)
, but I got an error saying that strings don’t have the attribute delete.
Here is my code, where I’m getting error on 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()
Advertisement
Answer
After poking around a bit through the Introduction to Tkinter, I came up with the code below, which doesn’t do anything except display a text field and clear it when the "Clear text"
button is pushed:
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()