python - ventana - ¿Cómo borrar el widget de entrada después de presionar un botón en Tkinter?
texto en tkinter (7)
Debes continuar con ent.delete(0,"end")
lugar de usar ''END'', usa ''end'' dentro de la cita.
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()
Esto resolverá tu problema.
Estoy intentando borrar el widget de Entry
después de que el usuario presiona un botón con Tkinter.
Intenté usar ent.delete(0, END)
, pero recibí un error que dice que las cadenas no tienen el atributo delete .
Aquí está mi código, donde real.delete(0, END)
un error en 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()
Después de revisar un poco 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 se presiona el botón "Clear text"
:
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()
En primer lugar, asegúrese de que el Texto esté habilitado, luego elimine sus etiquetas y luego el contenido.
myText.config(state=NORMAL)
myText.tag_delete ("myTags")
myText.delete(1.0, END)
Cuando el texto está "DESACTIVADO", la eliminación no funciona porque el campo Texto está en modo de solo lectura.
Intenta con esto:
import os
os.system(''clear'')
No tengo claro tu pregunta. De http://effbot.org/tkinterbook/entry.htm#patterns , parece que solo necesita hacer una tarea después de haber llamado a eliminar. 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?
ent.delete(0, END)
es la respuesta correcta, asumiendo que ent
es una referencia adecuada al widget de entrada. Si recibe el error que dice que hace, tiene un error en su código. Deberá mostrarnos el código si no puede detectar el error usted mismo.
real
obtiene el valor ent.get()
que es solo una cadena. No tiene idea de dónde vino, y no hay manera de afectar el widget.
En lugar de real.delete()
, llame a .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))