Comment cacher, récupérer et supprimer les widgets Tkinter

  1. Cacher et récupérer les widgets Tkinter
  2. Supprimer définitivement les widgets Tkinter en cliquant sur un bouton

Dans ce tutoriel, nous allons démontrer comment cacher, récupérer les widgets Tkinter, en cliquant sur un bouton. Enfin, nous vous montrerons également comment supprimer ou tuer les widgets Tkinter existants.

Cacher et récupérer les widgets Tkinter

pack_forget() méthode pour cacher les Widgets Tkinter

Contrairement à la méthode pack dans les widgets Tkinter, nous pourrions cacher les widgets Tkinter en appelant la méthode pack_forget() pour rendre les widgets 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 cache et récupère les widgets en cliquant sur un bouton

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

pack_forget() est lié à la commande du bouton buttonForget.

Il va cacher le widget de label après avoir cliqué sur le bouton, mais le label lui-même existe toujours mais devient invisible.

Nous devons appeler la méthode pack() à nouveau pour empaqueter le widget afin de le rendre visible, ou en d’autres termes, pour le récupérer.

grid_forget() Méthode pour cacher les widgets Tkinter si le Layout grid est utilisé

Si les widgets sont placés avec le gestionnaire de layout grid, nous devrions utiliser la méthode grid_forget() pour rendre les widgets Tkinter 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.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 cache et récupère les widgets avec la méthode grid_forget en cliquant sur un bouton

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

Ici, nous lions la méthode grid_forget à la commande du bouton.

Vous pourriez remarquer que la position du label n’est pas la même avant qu’il ne soit caché après que vous ayez appelé la méthode grid à nouveau.

Si nous avons l’intention de restaurer le label à sa position originale, la méthode grid_remove sera la bonne option.

grid_remove() Méthode pour cacher les widgets Tkinter si le Layout grid est utilisé

grid_remove() cache le widget mais se souvient des options de la grille comme colonne et rangée.

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 cache et récupère les widgets avec la méthode grid_remove en cliquant sur un bouton

Supprimer définitivement les widgets Tkinter en cliquant sur un bouton

Nous allons montrer comment supprimer définitivement les widgets Tkinter en appelant la méthode destroy dans cette section.

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 supprime les widgets avec la méthode `destroy` en cliquant sur un bouton

Le bouton est supprimé après avoir cliqué sur le bouton.

Vous pouvez essayer de cliquer sur le bouton buttonRecover mais vous obtiendrez la notification d’erreur _tkinter.TclError comme ci-dessous,

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"

Article connexe - Tkinter Label

  • Comment obtenir le texte du label Tkinter
  • Comment définir la frontière du gadget de l'étiquette Tkinter
  • Article connexe - Tkinter

  • Comment modifier le texte de l'étiquette Tkinter
  • Comment modifier la taille de la police de l'étiquette Tkinter