This is indeed a limitation with the current implementation of the
horizontal/verticalLayout.
The current workaround is to set the ratios all to 0 ([0,0,0], so that
at least you get the left/right attachments for free), and then add a
few attachNone/attachBottom/attachTop calls to re-attach the last two
elements:
(I recommend using the 'with' statement so you don't have to specify
the 'parent' explicitly, but still maintain clarity in the code
structure):
win = window()
with win:
topForm = verticalLayout(ratios=[0,0,0]) # use
verticalLayout/horizontalLayout instead of formLayout (internally uses
the same formLayout)
with topForm:
text1 = text(h=10, label='list')
TSL1 = textScrollList()
button1 = button(h=20)
# once outside of the 'with' block the form will redistribute automatically
topForm.attachForm(button1,'bottom',2) # attach the last element
to the bottom
topForm.attachNone(button1,'top') # detach the top of the last
element, so it respects its specified height
topForm.attachControl(TSL1, 'bottom', 2, button1) # attach the
previous element to the top of the last element
# once outside of the 'with' block the window will display automatically
- Ofer
www.mrbroken.com
On Tue, Nov 23, 2010 at 12:00 PM, r4inm4ker <[email protected]> wrote:
> Hi all,
> I had frequent use of the redistribute method in pymel's formLayout
> and horizontalLayout. In some cases i want the ratio of the last child
> to be fixed ( 0 ) . Consider an example below:
>
> ###################
> from pymel.core import *
> win = window()
> topForm = formLayout(parent=win)
> text1 = text(parent=topForm,h=10,label='list')
> TSL1 = textScrollList(parent=topForm)
> button1 = button(parent=topForm,h=20)
> topForm.redistribute(0,2,0)
> showWindow(win)
> ###################
>
> the problem with the code above is that button1 will not appear
> because the last ratio is 0. My current workaround is to add invisible
> dummy item with ratio 1 (i.e. text(parent=topForm,label='')) below the
> last child to force button1 to appear, but most of the time the final
> redistribute effect is not what I wish to achieve( the last dummy item
> will also be resized whenever the window is resized). Is there a
> direct solution to this problem, or other "cheat" to make it work as
> expected ?
>
> Hope I am clear, Thanks :)
> Jefri
>
> --
> http://groups.google.com/group/python_inside_maya
>
--
http://groups.google.com/group/python_inside_maya