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?
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.
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.