# Form Spacing Example

An example of controlling Form spacing.

The Form widget allows the developer to control the spacing between the rows and columns in the form. Changes to the row and column spacing at runtime are automatically reflected in the layout.

Tip

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

    $ enaml-run form_spacing.enaml

## Screenshot

## Example Enaml Code

    #------------------------------------------------------------------------------
    # Copyright (c) 2014-2024,, 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 controlling Form spacing.

    The Form widget allows the developer to control the spacing between the
    rows and columns in the form. Changes to the row and column spacing at
    runtime are automatically reflected in the layout.

    << autodoc-me >>
    """
    from enaml.layout.api import vbox
    from enaml.widgets.api import (
        Window, Container, Form, CheckBox, Label, Field, Separator, SpinBox
    )

    enamldef Main(Window):
        title = 'Form Spacing'
        Container:
            padding = 0
            constraints = [vbox(f1, 0, sep, 0, f2)]
            Form: f1:
                Label:
                    text = 'Two Visible'
                CheckBox: cbox:
                    checked = True
                Label:
                    text = 'Row Spacing'
                SpinBox: rspin:
                    value = 10
                Label:
                    text = 'Column Spacing'
                SpinBox: cspin:
                    value = 10
            Separator: sep:
                pass
            Form: f2:
                row_spacing << rspin.value
                column_spacing << cspin.value
                Label:
                    text = 'One'
                Field:
                    pass
                Label:
                    text = 'Two'
                    visible << cbox.checked
                Field:
                    visible << cbox.checked
                Label:
                    text = 'A Long Label'
                Field:
                    pass