Ich habe eine Liste von Tkinter-Widgets, die ich dynamisch ändern möchte.
Wie kann ich die Widgets vollständig aus meinem Fenster löschen?
Sie können pack_forget
aufrufen, um ein Widget zu entfernen (wenn Sie pack
verwenden, um es dem Fenster hinzuzufügen).
Beispiel:
from tkinter import *
root = Tk()
b = Button(root, text="Delete me", command=lambda: b.pack_forget())
b.pack()
root.mainloop()
Wenn Sie pack_forget
verwenden, können Sie das Widget später erneut anzeigen, indem Sie pack
erneut aufrufen. Wenn Sie es dauerhaft löschen möchten, rufen Sie destroy
im Widget auf (dann können Sie es nicht erneut hinzufügen).
Wenn Sie die Methode grid
verwenden, können Sie das Widget mit grid_forget
oder grid_remove
zum hide verwenden.
Eine Möglichkeit, dies zu tun, besteht darin, die Sklavenliste aus dem zu löschenden Rahmen zu holen und sie entsprechend Ihren Bedürfnissen zu zerstören oder zu "verstecken". Um einen klaren Rahmen zu erhalten, können Sie dies folgendermaßen tun:
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()
Sie sollten grid_slaves()
, pack_slaves()
oder slaves()
aufrufen, abhängig von der Methode, mit der Sie das Widget zum Frame hinzugefügt haben.
Sie können die Vergissmethode im Widget verwenden
von tkinter import * root = Tk () b = Button (root, text = "Delete me", Befehl = b.forget) b.pack ( ) root.mainloop ()