J'ai une liste de widgets Tkinter que je veux changer dynamiquement.
Comment puis-je supprimer complètement les widgets de ma fenêtre?
Vous pouvez appeler pack_forget
pour supprimer un widget (si vous utilisez pack
pour l'ajouter à la fenêtre).
Exemple:
from tkinter import *
root = Tk()
b = Button(root, text="Delete me", command=lambda: b.pack_forget())
b.pack()
root.mainloop()
Si vous utilisez pack_forget
, vous pourrez ultérieurement afficher le widget en appelant à nouveau pack
. Si vous souhaitez le supprimer définitivement, appelez destroy
sur le widget (vous ne pourrez pas l'ajouter de nouveau).
Si vous utilisez la méthode grid
, vous pouvez utiliser grid_forget
ou grid_remove
pour cacher le widget.
Une façon de le faire est d’obtenir la liste des esclaves du cadre à effacer et de les détruire ou de les "masquer" en fonction de vos besoins. Pour obtenir un cadre clair, vous pouvez le faire comme ceci:
from tkinter import *
root = Tk()
def clear():
list = root.grid_slaves()
for l in list:
l.destroy()
Label(root,text='Hello World!').grid(row=0)
Button(root,text='Clear',command=clear).grid(row=1)
root.mainloop()
Vous devez appeler grid_slaves()
, pack_slaves()
ou slaves()
en fonction de la méthode utilisée pour ajouter le widget au cadre.
Vous pouvez utiliser la méthode oublier sur le widget
de tkinter import * root = Tk () b = Bouton (racine, texte = "Efface-moi", commande = b.forget). ) root.mainloop ()