Hi Alex, John,

  No need to collect a list of widgets to delete.  Use pack_slaves()
to find the widgets packed
in the the frame, and then kill each of these:

for wgt in self.mainContainer.pack_slaves():
    wgt.destroy()

All widgets within these widgets will also be destroyed.

Mick

On Wed, Jul 2, 2008 at 8:12 AM, Alexnb <[EMAIL PROTECTED]> wrote:
>
> Haha!, Brilliant, worked perfectly! Thank you for the help!
>
>
>
> John McMonagle-3 wrote:
>>
>> Alexnb wrote:
>>> I have an app that has a base frame, and some other frames inside of that
>>> base frame. My question is if there is some way to clear out the base
>>> frame.
>>> Meaning leaving an empty baseframe. See I have a function that pulls up
>>> frames inside that base frame. The problem comes when I hit a button(this
>>> button is the button that first shows the frames inside the base frame,
>>> basically you click it and the internal frames show up.) and then I hit
>>> it
>>> again, I get some weird stuff. Okay, this is getting really complicated.
>>> I
>>> really just want to know if I can clear out a frame, and still be able to
>>> fill it back up again. If you want ot uunderstand further I'll post the
>>> code
>>> at the bottom and just run it, then hit the "Word List" button, then hit
>>> it
>>> again, you'll see what I am talking about.
>>>
>> Make a list of the widgets when they are created and destroy the widgets
>> in this list whenever you have to re-define them.
>>
>> Regards,
>>
>> John
>>
>>
>> Your code with mods:
>>
>> from Tkinter import *
>>
>> class App:
>>     def __init__(self, parent):
>>         self.parent = parent
>>         self.parent.geometry("500x250")
>>
>>         self.list_of_widgets = []
>>
>>         #----------------------------Contstants for Buttons------------
>>
>>         button_padx = "2m"
>>         button_pady = "1m"
>>
>>         #--------------------------end constants-----------------------
>>
>>         self.baseContainer = Frame(self.parent)
>>         self.baseContainer.pack(side=TOP, fill = BOTH, expand=NO)
>>
>>         #the Top Frame with all the buttons
>>         self.topContainer = Frame(self.baseContainer)
>>         self.topContainer.pack(side=TOP, expand=YES, ipadx=5,
>>                                ipady=5, fill = X, anchor=N)
>>
>>
>>
>>         #the frame with the main things the user will use
>>         self.mainContainer = Frame(self.baseContainer)
>>         self.mainContainer.pack(side=TOP,
>>                                 ipadx = 5,
>>                                 ipady = 5,
>>                                 anchor=CENTER,
>>                                 expand=YES,
>>                                 fill=BOTH)
>>
>>         #---------------------Top Buttons-----------------------------
>>
>>         self.defineButton = Button(self.topContainer, padx=button_padx,
>>                                    pady=button_pady)
>>         self.defineButton.configure(text="Word List",
>> command=self.define_Frame)
>>         self.defineButton.pack(side=LEFT)
>>
>>         #--------------------------------------------------------------
>>     def define_Frame(self):
>>         # destroy all the child widgets of the Frame
>>         for widget in self.list_of_widgets:
>>             widget.destroy()
>>         self.list_of_widgets = []
>>
>>         myMessage="Please type in all the words that you would like to
>> define"
>>         xxx = Label(self.mainContainer, text=myMessage,
>>                     justify=LEFT)
>>         xxx.pack(side=TOP, anchor=N)
>>         self.list_of_widgets.append(xxx)
>>
>>         #The LEFT Frame that comes up when you hit define
>>         self.defineContainer1 = Frame(self.mainContainer)
>>         self.defineContainer1.pack(side=LEFT, ipadx = 5,
>>                                    ipady = 5, expand=YES, fill=BOTH)
>>         self.list_of_widgets.append(self.defineContainer1)
>>
>>         #The RIGHT Frame that comes up when you hit define
>>         self.defineContainer2 = Frame(self.mainContainer)
>>         self.defineContainer2.pack(side=LEFT, ipadx=5,
>>                                     ipady=5, expand=YES, fill=BOTH)
>>         self.list_of_widgets.append(self.defineContainer2)
>>
>>         #This frame is where the define button goes
>>         self.defineButtonF = Frame(self.baseContainer)
>>         self.defineButtonF.pack(side=TOP,
>>                                 anchor=S,
>>                                 ipady=5,
>>                                 ipadx=5,
>>                                 fill=BOTH,
>>                                 expand=NO)
>>         self.list_of_widgets.append(self.defineButtonF)
>>
>>         #----------------------------Contstants for Buttons------------
>>
>>         self.button_padx = "2m"
>>         self.button_pady = "1m"
>>
>>         #--------------------------end constants-----------------------
>>
>>
>>
>>
>>         #----------------------STUFF FOR DEFINE
>> FRAME-------------------------
>>
>>         self.e1 = Entry(self.defineContainer1)
>>         self.e1.pack(fill=X)
>>
>>         self.e2 = Entry(self.defineContainer1)
>>         self.e2.pack(fill=X)
>>
>>         self.e3 = Entry(self.defineContainer1)
>>         self.e3.pack(fill=X)
>>
>>         self.e4 = Entry(self.defineContainer1)
>>         self.e4.pack(fill=X)
>>
>>         self.e5 = Entry(self.defineContainer1)
>>         self.e5.pack(fill=X)
>>
>>         self.e6 = Entry(self.defineContainer1)
>>         self.e6.pack(fill=X)
>>
>>         self.e7 = Entry(self.defineContainer1)
>>         self.e7.pack(fill=X)
>>
>>         self.e8 = Entry(self.defineContainer2)
>>         self.e8.pack(fill=X)
>>
>>         self.e9 = Entry(self.defineContainer2)
>>         self.e9.pack(fill=X)
>>
>>         self.e10 = Entry(self.defineContainer2)
>>         self.e10.pack(fill=X)
>>
>>         self.e11 = Entry(self.defineContainer2)
>>         self.e11.pack(fill=X)
>>
>>         self.e12 = Entry(self.defineContainer2)
>>         self.e12.pack(fill=X)
>>
>>         self.e13 = Entry(self.defineContainer2)
>>         self.e13.pack(fill=X)
>>
>>         self.e14 = Entry(self.defineContainer2,)
>>         self.e14.pack(fill=X)
>>
>> #-------------------------Define Button Stuff-------------------------
>>
>>         #Define it button
>>         self.defineIt= Button(self.defineButtonF,
>> command=self.DefineClick)
>>         self.defineIt.configure(text="Define!")
>>         self.defineIt.bind("<Return>", self.DefineClickE)
>>         self.defineIt.pack(side=TOP,
>>                             anchor=N,
>>                             padx=self.button_padx,
>>                             pady=self.button_pady,)
>>     def DefineClickE(self, event):
>>         print "Define was hit with Enter"
>>         self.DefineClick()
>>     def DefineClick(self):
>>         print "Define was activated."
>>
>> #----------------------------end define Button Stuff----------------------
>>
>>
>>
>> root = Tk()
>> app = App(root)
>> root.mainloop()
>> _______________________________________________
>> Tkinter-discuss mailing list
>> Tkinter-discuss@python.org
>> http://mail.python.org/mailman/listinfo/tkinter-discuss
>>
>>
>
> --
> View this message in context: 
> http://www.nabble.com/Clearing-out-a-Frame-tp18230530p18230910.html
> Sent from the Python - tkinter-discuss mailing list archive at Nabble.com.
>
> _______________________________________________
> Tkinter-discuss mailing list
> Tkinter-discuss@python.org
> http://mail.python.org/mailman/listinfo/tkinter-discuss
>
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to