From: Tessa L. <tl...@of...> - 2002-10-08 16:16:47
|
You probably need to pack both the outer Frame and the ScrolledFrame with expand=1 and fill=BOTH. For example: outer = Frame() outer.pack(expand=1, fill=BOTH) inner = ScrolledFrame(outer) inner.pack(expand=1, fill=BOTH) expand=1 means that the widget should expand to take up all extra space when its container is resized, and fill=BOTH says that when it's been packed into a space such that there is extra space to its sides, it should fill that space up. --Tessa |
From: Tessa L. <tl...@of...> - 2002-10-08 17:31:31
|
Oops, I didn't notice you were using a grid geometry manager. Sorry, I can't help you there. Do you have a small test case? --Tessa |
From: David G. <dgi...@ve...> - 2002-10-08 17:41:34
|
Here's a pretty simple script that exhibits the behavior. If you resize the window, the ScrolledFrame doesn't resize. #!/usr/local/bin/python import Tkinter, tkFont, Pmw, sys class TestFrame(Tkinter.Frame): def __init__(self, master=None): Tkinter.Frame.__init__(self, master) self.pack(expand=1, fill='both') w = Tkinter.Button(self, text='hello') w.grid(row=0, column=0, sticky='w') w = Tkinter.Button(self, text='QUIT', command=self.quit) w.grid(row=0, column=10, sticky='e') self.tables = Pmw.ScrolledFrame(self) self.tables.grid(row=1, column=0, columnspan=11, sticky='nsew') self.table=self.tables.interior() for i in [(x,y) for x in range(15) for y in range(15)]: w = Tkinter.Button(self.table, text=("%s" % (i,))) w.grid(row=i[1], column=i[0], sticky='nsew') Pmw.initialise() run = TestFrame() run.mainloop() Dave. -- ============================================================================ |David Gilbert, Velocet Communications. | Two things can only be | |Mail: dgi...@ve... | equal if and only if they | |http://daveg.ca | are precisely opposite. | =========================================================GLO================ |
From: David G. <dgi...@ve...> - 2002-10-08 16:28:41
|
>>>>> "Tessa" == Tessa Lau <tl...@of...> writes: Tessa> You probably need to pack both the outer Frame and the Tessa> ScrolledFrame with expand=1 and fill=BOTH. In particluar, I thought that was what the sticky='nsew' option to the grid manager did. Dave. -- ============================================================================ |David Gilbert, Velocet Communications. | Two things can only be | |Mail: dgi...@ve... | equal if and only if they | |http://daveg.ca | are precisely opposite. | =========================================================GLO================ |
From: Eric P. <pe...@cg...> - 2002-10-08 17:42:26
|
On Tuesday, October 8, 2002, at 09:28 AM, David Gilbert wrote: >>>>>> "Tessa" == Tessa Lau <tl...@of...> writes: > > Tessa> You probably need to pack both the outer Frame and the > Tessa> ScrolledFrame with expand=1 and fill=BOTH. > > In particluar, I thought that was what the sticky='nsew' option to the > grid manager did. The "sticky" option controls what the widget does when the parcel it's assigned by the grid manager is larger than its requested size, but by default the grid manager does not allocate extra space to rows or columns (i.e. their "weight" is zero). To get extra space allocated to a row or column, you have to use 'rowconfigure' or 'columnconfigure. For example, if your outer frame was name 'frame' and the ScrolledFrame was in row 0, column 3, you would: frame.rowconfigure(0, weight=1) frame.columnconfigure(3, weight=1) If you had several rows or columns that accept extra space, you can vary the weights to have the extra space allocated proportionally. Eric Pettersen UCSF Computer Graphics Lab pe...@cg... http://www.cgl.ucsf.edu |
From: David G. <dgi...@ve...> - 2002-10-08 17:47:14
|
>>>>> "Eric" == Eric Pettersen <pe...@cg...> writes: Eric> The "sticky" option controls what the widget does when the Eric> parcel it's assigned by the grid manager is larger than its Eric> requested size, but by default the grid manager does not Eric> allocate extra space to rows or columns (i.e. their "weight" is Eric> zero). To get extra space allocated to a row or column, you Eric> have to use 'rowconfigure' or 'columnconfigure. For example, if Eric> your outer frame was name 'frame' and the ScrolledFrame was in Eric> row 0, column 3, you would: Eric> frame.rowconfigure(0, weight=1) frame.columnconfigure(3, Eric> weight=1) Eric> If you had several rows or columns that accept extra space, you Eric> can vary the weights to have the extra space allocated Eric> proportionally. Hrm... the documentation is wrong on this point, then. It states that the default weight is 1. Dave. -- ============================================================================ |David Gilbert, Velocet Communications. | Two things can only be | |Mail: dgi...@ve... | equal if and only if they | |http://daveg.ca | are precisely opposite. | =========================================================GLO================ |
From: Greg M. <gr...@in...> - 2002-10-11 13:37:05
|
On Tue 08 Oct 2002 at 01:41:27PM -0400, David Gilbert wrote: > Here's a pretty simple script that exhibits the behavior. If you > resize the window, the ScrolledFrame doesn't resize. > > #!/usr/local/bin/python > > import Tkinter, tkFont, Pmw, sys > > class TestFrame(Tkinter.Frame): > > def __init__(self, master=None): > > Tkinter.Frame.__init__(self, master) > self.pack(expand=1, fill='both') > > w = Tkinter.Button(self, text='hello') > w.grid(row=0, column=0, sticky='w') > > w = Tkinter.Button(self, text='QUIT', command=self.quit) > w.grid(row=0, column=10, sticky='e') > > self.tables = Pmw.ScrolledFrame(self) > self.tables.grid(row=1, column=0, columnspan=11, sticky='nsew') > self.table=self.tables.interior() > > for i in [(x,y) for x in range(15) for y in range(15)]: > w = Tkinter.Button(self.table, text=("%s" % (i,))) > w.grid(row=i[1], column=i[0], sticky='nsew') > > Pmw.initialise() > run = TestFrame() > run.mainloop() Add this at the end of your TestFrame constructor: self.grid_rowconfigure(1, weight = 1) self.grid_columnconfigure(0, weight = 1) On Tue 08 Oct 2002 at 01:47:09PM -0400, David Gilbert wrote: > >>>>> "Eric" == Eric Pettersen <pe...@cg...> writes: > Hrm... the documentation is wrong on this point, then. It states that > the default weight is 1. Are you talking about the grid documentation that comes with Tcl? I could not find any mention of a default value for weight. But using print self.grid_rowconfigure(1, 'weight') print self.grid_columnconfigure(0, 'weight') before the above two lines shows that the default weight is 0. -- Greg McFarlane Really Good Software Pty Ltd Sydney Australia gr...@in... |
From: David G. <dgi...@ve...> - 2002-10-11 14:36:43
|
>>>>> "Greg" == Greg McFarlane <gr...@in...> writes: Greg> On Tue 08 Oct 2002 at 01:47:09PM -0400, David Gilbert wrote: >> >>>>> "Eric" == Eric Pettersen <pe...@cg...> writes: >> Hrm... the documentation is wrong on this point, then. It states >> that the default weight is 1. Greg> Are you talking about the grid documentation that comes with Greg> Tcl? I could not find any mention of a default value for Greg> weight. But using print self.grid_rowconfigure(1, 'weight') Greg> print self.grid_columnconfigure(0, 'weight') before the above Greg> two lines shows that the default weight is 0. I was, at that point, talking about some Tkinter documentation that I have been using, but I looked back and found that I was mistaken... or that I can't find what I was reading when I thought that. Dave. -- ============================================================================ |David Gilbert, Velocet Communications. | Two things can only be | |Mail: dgi...@ve... | equal if and only if they | |http://daveg.ca | are precisely opposite. | =========================================================GLO================ |
From: David G. <dgi...@ve...> - 2002-10-08 16:25:35
|
>>>>> "Tessa" == Tessa Lau <tl...@of...> writes: Tessa> You probably need to pack both the outer Frame and the Tessa> ScrolledFrame with expand=1 and fill=BOTH. Tessa> For example: Tessa> outer = Frame() outer.pack(expand=1, fill=BOTH) inner = Tessa> ScrolledFrame(outer) inner.pack(expand=1, fill=BOTH) Tessa> expand=1 means that the widget should expand to take up all Tessa> extra space when its container is resized, and fill=BOTH says Tessa> that when it's been packed into a space such that there is Tessa> extra space to its sides, it should fill that space up. How does this translate when using the grid geometry manager? There are warnings that grid and pack don't play well together. Dave. -- ============================================================================ |David Gilbert, Velocet Communications. | Two things can only be | |Mail: dgi...@ve... | equal if and only if they | |http://daveg.ca | are precisely opposite. | =========================================================GLO================ |