wake-up-neo.com

Wie lösche ich Tkinter-Widgets aus einem Fenster?

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? 

36
TheBeardedBerry

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.

52
sloth

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.

12
Oziel Carneiro

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 () 
0
saeedghollami