Python Tkinter effacement d'un cadre

J'essaie d'effacer un cadre dans le tkinter afin que le nouveau contenu puisse être écrit (actualiser les informations) mais je n'ai pas réussi à le faire. Je suis au courant de ces

frame.destroy()
frame.pack_forget()
frame.grid_forget()

Mais cadre.destroy() supprimera totalement le cadre. Et les deux autres ne pouvaient pas non plus me donner le résultat que je veux.Ce dont j'ai besoin est juste de effacer tous les éléments du cadre mais le cadre lui-même restera . Est-il de toute façon à le faire?

22
demandé sur Chris Aung 2013-04-03 11:54:46

2 réponses

pack_forget et grid_forget ne supprimera que les widgets de la vue, il ne les détruira pas. Si vous ne prévoyez pas de réutiliser les widgets, votre seul vrai choix est de les détruire avec la méthode destroy.

Pour ce faire, vous avez deux choix: détruire chacun individuellement, ou détruire le cadre qui fera détruire tous ses enfants. Ce dernier est généralement le plus facile et le plus efficace.

Puisque vous prétendez ne pas vouloir détruire le cadre conteneur, créez un cadre secondaire. Demandez à ce cadre secondaire d'être le conteneur pour tous les widgets que vous souhaitez supprimer,puis placez ce cadre dans le parent que vous ne voulez pas détruire . Ensuite, il est juste une question de détruire ce cadre et tous les widgets intérieurs seront détruits avec elle.

18
répondu Bryan Oakley 2015-08-09 20:38:48

Http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/universal.html

W. winfo_children ()
Renvoie une liste de tous les enfants de w, dans leur ordre d'empilement du plus bas (en bas) au plus haut (en haut).

for widget in frame.winfo_children():
    widget.destroy()

Va détruire tout le widget dans votre cadre. Pas besoin d'un deuxième cadre.

40
répondu Tom.Slick 2015-02-20 07:36:17