Saltar al contenido

¿Cómo borrar el widget de entrada después de presionar un botón en Tkinter?

Luego de tanto luchar hemos hallado el resultado de este inconveniente que agunos usuarios de este espacio tienen. Si quieres compartir algún detalle no dudes en aportar tu comentario.

Solución:

Después de hurgar un poco en la Introducción a Tkinter, se me ocurrió el siguiente código, que no hace nada excepto mostrar un campo de texto y borrarlo cuando el "Clear text" se presiona el botón:

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

No tengo claro tu pregunta. De http://effbot.org/tkinterbook/entry.htm#patterns, parece que solo necesita hacer una tarea después de llamar a la eliminación. Para agregar texto de entrada al widget, use el método de inserción. Para reemplazar el texto actual, puede llamar a eliminar antes de insertar el nuevo texto.

e = Entry(master)
e.pack()

e.delete(0, END)
e.insert(0, "")

¿Podrías publicar un poco más de código?

real obtiene el valor ent.get() que es solo un string. No tiene idea de dónde vino y no hay forma de afectar el widget.

En vez de real.delete()llamar .delete() en el propio widget de entrada:

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

Recuerda que puedes mostrar este artículo si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *