Start New Discussion within our Software Development Community

Does anybody know how to clear all widgets; labels, buttons, etc. from a tkinter frame so that new ones may be put in their place? I've tried self.destroy() but that makes the frame unreachable, and self.grid_forget() followed by, "and without" self.grid() neither of these work, at least not as expected. any suggestions?

Yes, to remove a widget you'd do widget.grid_forget(). May we see the failing code (specifically, what is self in that context)?

You can pack them all into a Frame and destroy the Frame.

    import Tkinter as tk     ## Python 2.x
except ImportError:
    import tkinter as tk     ## Python 3.x

class DestroyTest():
    def __init__(self, top):"+10+10")


        test_label=tk.Label(self.frame, text="Label")
        test_label.grid(row=1, column=0)

        destroy_button=tk.Button(self.frame, text="Destroy Frame", \
        destroy_button.grid(row=10, column=0)

        exit_button=tk.Button(, text="Exit", command=top.quit)
        exit_button.grid(row=10, column=0)

    def destroy(self):
        self.new_toplevel=tk.Toplevel(, takefocus=True)

        lbl=tk.Label(self.new_toplevel, text="New Toplevel")


the context was a class inherited from the tkinter Frame class being used as a Toplevel, the problem I realized was that when I chose to destroy the frame,thinking of it as the window, really I was destroying the complete contents of that window. There were so many widgets in the frame that I didn't want to deal with grid_forget-ing all of them. but I did as woooee suggested "I don't know why I didn't think of it" and added a frame within it, destroyed it, and recreated it. Below is the tentative result, I haven't "prettied it up" yet with the geometry, button height, or grid locations. Note that it is the same window, I just took the screenshot twice to show the change when next is pressed.

Edit, apparently I can't change the button height for ttk style buttons...anybody done anything to get around that?

Attachments VI.jpg 21.59 KB
This question has already been answered. Start a new discussion instead.