web-dev-qa-db-fra.com

Comment supprimer les widgets Tkinter d'une fenêtre?

J'ai une liste de widgets Tkinter que je veux changer dynamiquement. 

Comment puis-je supprimer complètement les widgets de ma fenêtre? 

36
TheBeardedBerry

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.

52
sloth

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.

12
Oziel Carneiro

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