Dan Dan - 5 months ago 60
Python Question

How to clear the Entry widget after a button is pressed in Tkinter?

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()

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()
Comments