One of Python’s strengths is the availability of a large toolbox for building Graphical User Interfaces (GUIs), particularly when they involve 2D or 3D interactive visualizations. At Enthought, we have built many custom applications for scientists and engineers that leverage these powerful Python building blocks. In this 3-day course we provide an over-view of tools that allow even a relatively novice programmer to create applications with impressive 2D and 3D visualizations.

The pre-requisite for this training session is our 3-day Python for Scientists and Engineers course or equivalent experience.


Day 1
8:30 am to 5:00 pm

Rapid Application Development

We begin by introducing the big picture of Traits as a tool for building Python objects with intelligent attributes that simplifies the creation of reactive components. Traits classes automatically provide attribute standardization (delegation, initialization, and validation), notification, and visualization. This allows the creation of GUI programs in a much more descriptive rather than imperative style. Several standard patterns have been wrapped up into Traits descriptions and we illustrate these concepts by example and use exercise to enhance the learning experience:

  • Introduction and initial examples
  • Basic Trait types
    • Validation
    • Initialization
  • Notification in Traits
    • Static notification
    • Dynamic notification
    • Advanced notification topics
  • Traits UI
    • Default UI (edit_traits)
    • Extending the UI with Views, Groups, and Items
    • Tour of Trait editors
    • Customizing Views, Groups, and Items
    • Buttons, Menus, and Toolbars
    • Drag and Drop

Day 2
8:30 am to 5:00 pm

Building Interactive Visualizations in 2D and 3D

A common UI element, particularly for scientific applications is a 2D or 3D visualization. On the second day we illustrate how to insert these visualizations into a Traits UI (as well as a non-Traits UI) application using the Enthought Visualization Stack (Kiva, Enable, Chaco, and Mayavi):

  • Kiva is a display-pdf drawing layer.
  • Enable is an object “canvas” layer that also abstracts user-event handling (mouse and keyboard) for multiple back-ends.
  • Chaco is a scientific plotting layer on top of Enable that is optimized for interactive 2D visualization.
  • Mayavi is a 3D visualization framework built on top of VTK and Traits. This portion of the class will teach how to build 3D visualizations from data.

Day 3
8:30 am to 5:00 pm

Pluggable and Customizable Applications

On the third day, we continue the discussion about building 2D and 3D applications and introduce Envisage which is a framework for building applications with plugins.This allows different UI applets to combine without knowing about each other before hand to create a single larger user-interface in much the same way that modules and shared libraries allow applications to be created from smaller parts.