Nested Boxes Example

An example of how the hbox and vbox layout helpers can be nested.

The layout in this example is not necessarily one that would be used in a production application. However, it serves to demonstrate the idea that the hbox and vbox layout helpers can be arbitrarily nested.

Tip

To see this example in action, download it from nested_boxes and run:

$ enaml-run nested_boxes.enaml

Screenshot

../_images/ex_nested_boxes.png

Example Enaml Code

#------------------------------------------------------------------------------
# Copyright (c) 2013, Nucleic Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
#------------------------------------------------------------------------------
""" An example of how the `hbox` and `vbox` layout helpers can be nested.

The layout in this example is not necessarily one that would be used
in a production application. However, it serves to demonstrate the idea
that the `hbox` and `vbox` layout helpers can be arbitrarily nested.

<< autodoc-me >>
"""
from enaml.layout.api import vbox, hbox, align, spacer
from enaml.widgets.api import Window, Container, Label, PushButton


enamldef Main(Window):
    Container:
        constraints = [
            vbox(
                lbl_a,
                lbl_b,
                hbox(lbl_c, spacer, lbl_d, spacer, lbl_e),
                hbox(spacer, lbl_f, lbl_g),
                hbox(btn_1, spacer, btn_2, spacer, btn_3)),
            align('h_center', self, lbl_d, btn_2),
        ]
        Label: lbl_a:
            text = "Label A"
        Label: lbl_b:
            text = "Label B"
        Label: lbl_c:
            text = "Label C"
        Label: lbl_d:
            text = "Label D"
        Label: lbl_e:
            text = "Label E"
        Label: lbl_f:
            text = "Label F"
        Label: lbl_g:
            text = "Label G"
        PushButton: btn_1:
            text = "Button 1"
        PushButton: btn_2:
            text = "Button 2"
        PushButton: btn_3:
            text = "Button 3"