web-dev-qa-db-fra.com

Python Tkinter effacer 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 connais ces

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

mais frame.destroy () supprimera totalement le cadre. Et les deux autres n'ont pas pu 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. Y a-t-il un moyen de le faire?

26
Chris Aung

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 véritable 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 entraînera la destruction de tous ses enfants. Ce dernier est généralement le plus simple et le plus efficace.

Puisque vous prétendez ne pas vouloir détruire le cadre de conteneur, créez un cadre secondaire. Faites en sorte que ce cadre secondaire soit le conteneur de tous les widgets que vous souhaitez supprimer, puis placez ce cadre dans le parent que vous voulez pas que vous voulez détruire. Ensuite, il suffit de détruire ce cadre et tous les widgets intérieurs seront détruits avec lui.

20
Bryan Oakley

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 (bas) au plus haut (haut).

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

Détruit tous les widgets de votre cadre. Pas besoin d'un deuxième cadre.

54
Tom.Slick