I don't quite understand (if I'm interpreting you correctly) why you want separate widgets, all displayed at once, for several hundred records - surely better to just reuse the one set of widgets and have the scrollbar or back-forward buttons change which record is being displayed in the widgets.
If you're after replacing widgets, then you need to destroy them first. Use the self.destroy method and unset/change any variables referencing the widget so it get a chance to be garbage collected. However, if you want a scrollable view onto a larger area, what you need to do is use a Canvas, with a window shape on it. You then put a frame into that window. canvas = Tkinter.Canvas( <parent> ) canvas.grid( ... ) winID = self.canvas.create_window(0,0, anchor=Tkinter.NW) Then later you can add a frame to that window on the canvas: canvas.itemconfigure( winID, window = <my frame> ) canvas['scrollregion'] = canvas.bbox('all') Make sure you've created the frame and perhaps called update_idletasks() to give it a chance to size itself before shoving it onto the canvas. And of course, the scrollbar! yscroll = Tkinter.Scrollbar( <parent>, orient=Tkinter.VERTICAL) yscroll.grid( ... ) yscroll['command'] = canvas.yview canvas['yscrollcommand'] = yscroll.set On Thu, 01 Sep 2005 14:33:36 +0100, William Gill <[EMAIL PROTECTED]> wrote: > I need to display a couple of labels and a checkbox from each entry in > my database. Simple enough, but there are several hundred records, and > I only want to display 5 or 10 at a time. Can this be accomplished by > putting everything in a Frame(), using width, height, grid_propagate(0) > , and a scrollbar? or do I have to grid 5 rows at a time? If the > latter, can I just grid over the previous 5 or do they have to be > explicitly removed first. > > Thanks. > > Bill -- | Matt Hammond | R&D Engineer, BBC Research and Development, Tadworth, Surrey, UK. -- http://mail.python.org/mailman/listinfo/python-list