2016-03-29 22 views
0

Ich versuche eine Funktion in Python zu haben, die den Bildschirm löscht, wenn eine Taste gedrückt wird. Grid_remove ist mir bekannt, ich bin mir aber nicht sicher, wie ich es verwenden soll. Gibt es auch eine Möglichkeit, alles von einer bestimmten Funktion zu löschen, dh sowohl "hi" als auch "clear"?Löschen bestimmter Widgets in tkinter

from tkinter import * 

class Movies: 
    def __init__(self, master): 
     hi = Label(text = "Hello") 
     hi.grid(row = 0, column = 0) 

     clear = Button(text = "Click", command=self.clear) 
     clear.grid(row = 1, column = 0) 
    def clear(self): 
     hi.grid_remove() 




root = Tk() 
gui = Movies(root) 
root.geometry("100x200+0+0") 
root.mainloop() 
+0

Was genau meinen Sie mit "klar"? Möchten Sie die Widgets zerstören und durch andere Widgets ersetzen, oder möchten Sie die Widgets behalten, aber den angezeigten Text entfernen (zB: das Label auf einen leeren String setzen)? –

Antwort

0

Sie könnten der in winfo_children Methode gebaut verwenden, wenn Sie nur versteckt wechseln wollen/alle Widgets zeigt, in welchem ​​Elternteil die Widgets hält. Kleines Beispiel:

from tkinter import * 

class Movies: 

    def __init__(self, master): 

     self.master = master 
     self.state = 1 

     for i in range(5): 
      Label(self.master, text='Label %d' % i).grid(row=0, column=i) 
     self.magic_btn = Button(self.master, text='Make the Magic!', 
      command=self.magic) 
     self.magic_btn.grid(columnspan=5) 

    def magic(self): 

     self.state = not self.state 
     for widget in self.master.winfo_children(): #iterate over all child widgets in the parent 
      #Comment out to clear the button too, or leave to toggle widget states 
      if widget != self.magic_btn: #or some other widget you want to stay shown 
       if self.state: 
        widget.grid() 
       else: 
        widget.grid_remove() 
       print(self.state) 


root = Tk() 
gui = Movies(root) 
root.mainloop() 
Verwandte Themen