mehrere buttons auf einmal löschen

Fragen zu Tkinter.
Antworten
php_guru
User
Beiträge: 13
Registriert: Dienstag 29. April 2014, 14:22

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()
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.
php_guru
User
Beiträge: 13
Registriert: Dienstag 29. April 2014, 14:22

@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()
Antworten