Page Contents

This Page


An Enaml application consists of regular Python code, and .enaml files.

A .enaml file describes a GUI as a tree of elements. Each element has associated attributes and an optional identifier. Attributes customize the layout and behaviour of an application, and identifiers allow Python code to access widgets by name.

Enaml parses a hierarchical file (.enaml), then renders it with an available GUI toolkit. Enaml abstracts away toolkit-specific details.


The goals of the Enaml project are to:

  • Help separate the presentation and content (i.e., MVC)
  • Allow a single script to work across multiple widget toolkits when using the default interfaces.
  • Be extensible and allow adaptation and addition of the base widgets with little effort.
  • Integrate well with Traits
  • Have the ability to integrate with other model frameworks which support the observer pattern.


Enaml is developed using Python 2.7 and requires recent (2012-current) versions of the following libraries:




To install the package please check out the source from github

Then install with:

python install

Alternatively you can work in developing mode:

python develop

Enaml ships with optional high performance C++ extensions. To build them, an enviroment variable must be set before running

On Windows:


On OSX or Linux: