Seite 1 von 1

mehrere buttons auf einmal löschen

Verfasst: Sonntag 4. Mai 2014, 17:19
von php_guru
Hallo Zusammen:
Ich möchte in einer Methode mehrere Buttons, oder Labels, oder auch Entrys auf einmal löschen.
Leider scheitere ich jedes mal. Ich weiss wenn ich den Button an das Objekt binde dann geht es.
Aber ich möchte die Buttons nicht jedes mal an das Objekt binden müssen.
Und nicht 100x: self.button1.destroy() schreiben
Code:

Code: Alles auswählen

import tkinter as tk
class Obj:
    def __init__(self):
        self.root = tk.Tk()
        self.root.geometry("500x500")
        self.root.title('mein Programm')
        tk.Button(text='erstelle buttons', command=self.create_buttons).pack()
        self.root.mainloop()
        
    def create_buttons(self):
        x = 0
        while x<10:
            tk.Button(text='blablabl').pack()
            x+=1
        tk.Button(text='alle buttons loeschen', command=self.delete_buttons).pack()
        
    def delete_buttons(self):
        tk.Button.destroy()
Obj()

Re: mehrere buttons auf einmal löschen

Verfasst: Sonntag 4. Mai 2014, 17:26
von BlackJack
@php_guru: Dafür gibt es Datenstrukturen wie zum Beispiel Listen.

Ansonsten könnte man auch ein Containerwidget verwenden, also bei Tk zum Beispiel einen `Frame` und *den* samt Inhalt zerstören.

Re: mehrere buttons auf einmal löschen

Verfasst: Sonntag 4. Mai 2014, 18:09
von php_guru
@BlackJack Danke :)
Mit der Liste brauche ich ein Beispiel.

Mit dem Frame habe ich es geschafft. Code:

Code: Alles auswählen

import tkinter as tk
class Obj:
    def __init__(self):
        self.root = tk.Tk()
        self.root.geometry("500x500")
        self.root.title('mein Programm')
        tk.Button(text='erstelle buttons', command=self.create_buttons).pack()
        self.root.mainloop()
        
    def create_buttons(self):
        x = 0
        self.frame = tk.Frame(self.root)
        self.frame.pack()
        while x<10:
            tk.Button(self.frame, text='blablabl').pack()
            x+=1
        tk.Button(self.frame, text='alle buttons loeschen', command=self.delete_buttons).pack()
        
    def delete_buttons(self):
        self.frame.destroy()
Obj()