Cómo ocultar, recuperar y eliminar los widgets de Tkinter

  1. Ocultar y recuperar los widgets de Tkinter
  2. Elimine los Widgets de Tkinter de forma permanente haciendo clic en un botón

En este tutorial, demostraremos cómo ocultar, recuperar los widgets de Tkinter, haciendo clic en un botón. Finalmente, también te mostraremos cómo eliminar o matar los widgets de Tkinter existentes.

Ocultar y recuperar los widgets de Tkinter

Método pack_forget() para ocultar los Widgets de Tkinter

A diferencia del método pack method en los widgets de Tkinter, podríamos ocultar los widgets de Tkinter llamando al método pack_forget() para hacerlos invisibles.

try:
    import Tkinter as tk
except:
    import tkinter as tk
    

class Test():
   def __init__(self):
       self.root = tk.Tk()
       self.label=tk.Label(self.root,
                           text = "Label")
       self.buttonForget = tk.Button(self.root,
                          text = 'Click to hide Label',
                          command=lambda: self.label.pack_forget())
       self.buttonRecover = tk.Button(self.root,
                          text = 'Click to show Label',
                          command=lambda: self.label.pack())       
       
       self.buttonForget.pack()
       self.buttonRecover.pack()
       self.label.pack(side="bottom")
       self.root.mainloop()

   def quit(self):
       self.root.destroy()
        
app = Test()

Tkinter esconde y recupera los widgets haciendo clic en un botón

self.buttonForget = tk.Button(self.root,
                          text = 'Click to hide Label',
                          command=lambda: self.label.pack_forget())

pack_forget() está ligado al comando del botón buttonForget.

Ocultará el widget de la etiqueta después de hacer clic en el botón, pero la etiqueta en sí sigue existiendo pero se vuelve invisible.

Necesitamos llamar al método pack() de nuevo para empaquetar el widget para hacerlo visible, o en otras palabras, para recuperarlo.

grid_forget() Método para ocultar los widgets de Tkinter si se usa el diseño `grid

Si los widgets se colocan con el gestor de diseño grid, deberíamos usar el método grid_forget() para hacer invisibles los widgets de Tkinter.

try:
    import Tkinter as tk
except:
    import tkinter as tk
    

class Test():
   def __init__(self):
       self.root = tk.Tk()
       self.label=tk.Label(self.root,
                           text = "Label")
       self.buttonForget = tk.Button(self.root,
                          text = 'Click to hide Label',
                          command=lambda: self.label.grid_forget())
       self.buttonRecover = tk.Button(self.root,
                          text = 'Click to show Label',
                          command=lambda: self.label.grid())       
       
       self.buttonForget.grid(column=0, row=0, padx=10, pady=10)
       self.buttonRecover.grid(column=0, row=1, padx=10,  pady=10)
       self.label.grid(column=0, row=2, padx=10, pady=10)
       self.root.mainloop()

   def quit(self):
       self.root.destroy()
        
app = Test()

Tkinter oculta y recupera los widgets con el método grid_forget pulsando un botón

self.buttonForget = tk.Button(self.root,
                          text = 'Click to hide Label',
                          command=lambda: self.label.grid_forget())

Aquí, enlazamos el método grid_forget al comando del botón.

Podrías notar que la posición de la etiqueta no es la misma antes de que se oculte después de que vuelvas a llamar al método grid.

Si pretendemos restaurar la etiqueta a su posición original, el método grid_remove será la opción correcta.

grid_remove() Método para ocultar los widgets de Tkinter si se utiliza el diseño `grid

grid_remove()oculta el widget pero recuerda las opciones de la parrilla comocolumnyrow`.

try:
    import Tkinter as tk
except:
    import tkinter as tk
    

class Test():
   def __init__(self):
       self.root = tk.Tk()
       self.label=tk.Label(self.root,
                           text = "Label")
       self.buttonForget = tk.Button(self.root,
                          text = 'Click to hide Label',
                          command=lambda: self.label.grid_remove())
       self.buttonRecover = tk.Button(self.root,
                          text = 'Click to show Label',
                          command=lambda: self.label.grid())       
       
       self.buttonForget.grid(column=0, row=0, padx=10, pady=10)
       self.buttonRecover.grid(column=0, row=1, padx=10,  pady=10)
       self.label.grid(column=0, row=2, padx=10, pady=20)
       self.root.mainloop()

   def quit(self):
       self.root.destroy()
        
app = Test()

Tkinter esconde y recupera los widgets con el método grid_remove haciendo click en un botón

Elimine los Widgets de Tkinter de forma permanente haciendo clic en un botón

Mostraremos cómo eliminar los widgets de Tkinter de forma permanente llamando al método destroy en esta sección.

try:
    import Tkinter as tk
except:
    import tkinter as tk
    

class Test():
   def __init__(self):
       self.root = tk.Tk()
       self.label=tk.Label(self.root,
                           text = "Label")
       self.buttonForget = tk.Button(self.root,
                          text = 'Click to hide Label',
                          command=lambda: self.label.destroy())
       self.buttonRecover = tk.Button(self.root,
                          text = 'Click to show Label',
                          command=lambda: self.label.pack())       
       
       self.buttonForget.pack()
       self.buttonRecover.pack()
       self.label.pack(side="bottom")
       self.root.mainloop()

   def quit(self):
       self.root.destroy()
        
app = Test()

Tkinter borra los widgets con el método destroy pulsando un botón

El botón se borra después de hacer clic en el botón.

Puede intentar hacer clic en el botón buttonRecover pero obtendrá la notificación de error _tkinter.TclError como se muestra a continuación,

Exception in Tkinter callback
Traceback (most recent call last):
  File "D:\WinPython\WPy-3661\python-3.6.6.amd64\lib\tkinter\__init__.py", line 1702, in __call__
    return self.func(*args)
  File "C:\Users\jinku\OneDrive\Bureaublad\test.py", line 17, in <lambda>
    command=lambda: self.label.pack())
  File "D:\WinPython\WPy-3661\python-3.6.6.amd64\lib\tkinter\__init__.py", line 2140, in pack_configure
    + self._options(cnf, kw))
_tkinter.TclError: bad window path name ".!label"

Artículo relacionado - Tkinter Label

  • Cómo cambiar el tamaño de la fuente de la etiqueta Tkinter
  • Cómo cambiar el texto de la etiqueta Tkinter
  • Artículo relacionado - Tkinter

  • Cómo cambiar el tamaño de la fuente de la etiqueta Tkinter
  • Cómo cambiar el texto de la etiqueta Tkinter
  • comments powered by Disqus