Window Children Example

An example of using children with a Window widget.

The Window widget serves as the fundamental top level widget for UIs in Enaml. Window widgets may have at most one child widget which must be an instance of Container. This Container is referred to as the ‘central widget’ of the UI. The sizing behavior of a Window is largely determined by the sizing constraints of the central widget.

In this example, we use a Container and a few PushButton widgets to add content to the Window. Clicking on the first PushButton will print the central widget of the window to the shell.

This example focuses on features of the Window widget, see the other examples for explanations of the other widgets and language features.

Tip

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

$ enaml-run window_children.enaml

Screenshot

../_images/ex_window_children.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 using children with a `Window` widget.

The `Window` widget serves as the fundamental top level widget for UIs
in Enaml. `Window` widgets may have at most one child widget which must
be an instance of `Container`. This `Container` is referred to as the
'central widget' of the UI. The sizing behavior of a `Window` is largely
determined by the sizing constraints of the central widget.

In this example, we use a `Container` and a few `PushButton` widgets to
add content to the `Window`. Clicking on the first `PushButton` will
print the central widget of the window to the shell.

This example focuses on features of the `Window` widget, see the other
examples for explanations of the other widgets and language features.

<< autodoc-me >>
"""
from __future__ import print_function
from enaml.widgets.api import Window, Container, PushButton


enamldef Main(Window): main:
    title = 'Hello World!'
    Container:
        PushButton:
            text = 'Foo'
            clicked :: print(main.central_widget())
        PushButton:
            text = 'Bar'
        PushButton:
            text = 'Baz'