it-swarm.com.de

Python Tkinter löscht einen Frame

Ich versuche, einen Frame im tkinter zu löschen, damit der neue Inhalt geschrieben werden kann (Informationen aktualisieren), aber ich konnte es nicht schaffen, es zu tun. Ich bin mir dessen bewusst

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

mit frame.destroy () wird der Frame jedoch vollständig entfernt. Und die anderen beiden konnten mir auch nicht das gewünschte Ergebnis liefern. Ich brauche nur räume alle Elemente im Rahmen auf, aber der Rahmen selbst bleibt. Gibt es überhaupt etwas zu tun?

26
Chris Aung

pack_forget und grid_forget entfernt nur Widgets aus der Ansicht, zerstört sie aber nicht. Wenn Sie nicht vorhaben, die Widgets erneut zu verwenden, können Sie sie nur mit der Methode destroy zerstören.

Um dies zu tun, haben Sie zwei Möglichkeiten: Zerstören Sie jede einzeln oder zerstören Sie den Rahmen, wodurch alle ihre Kinder zerstört werden. Letzteres ist in der Regel am einfachsten und effektivsten.

Da Sie behaupten, dass Sie den Container-Frame nicht zerstören möchten, erstellen Sie einen sekundären Frame. Stellen Sie diesen sekundären Frame als Container für alle Widgets ein, die Sie löschen möchten, und setzen Sie diesen einen Frame in den übergeordneten Frame, den Sie zerstören möchten nicht. Dann geht es nur darum, diesen einen Frame zu zerstören, und alle inneren Widgets werden zusammen mit ihm zerstört.

20
Bryan Oakley

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

w.winfo_children ()
Gibt eine Liste aller w-untergeordneten Elemente in ihrer Stapelreihenfolge von der niedrigsten (unten) zur höchsten (oben) zurück.

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

Zerstört alle Widgets in Ihrem Frame. Es ist kein zweiter Frame erforderlich.

54
Tom.Slick