If you plan on literally destroying everything in the root window, my recommendation is to make a single frame be a child of the root window, and then put everything inside that frame. Then, when you need to clear the root window you only have to delete this one widget, and it will take care of deleting all of the other widgets.
If instead of destroying the widgets you want to merely hide them, the best solution is to use grid
, so that you can use grid_forget
to remove them from view, and grid
to make them visible again. You can use pack
and pack_forget
, but pack
doesn't remember where the widget was, making it more difficult to restore them without a lot of work.
If your program is made of logical groups of widgets, use frames to create the groups, and then you can destroy
or call grid_forget
on the entire frame at once, rather than having to do that for each individual widget.