pyjamas

build AJAX apps in Python (like Google did for Java)



About pyjamas

Many people, when first finding out about Google Web Toolkit, wonder "why can't I use Python instead of Java?". pyjamas is designed to make that possible.  And we're drawing heavily from Google's work.

Overview

Like GWT, pyjamas involves the translation of the application and libraries (including UI widgets and DOM classes) to Javascript and the packaging up of that Javascript code.
There are two core developer tools included with pyjamas.  pyjs[1] translates Python code to Javascript by walking the Python abstract syntax tree and generating Javascript.

In many cases, built-in Python types require a custom Javascript implementation.  For example, even though Python lists are similar to Javascript arrays, Python lists are converted to custom objects that implement methods like append.  These custom objects required for translation by pyjs are defined in a library called pyjslib.[2]

Like GWT, pyjamas comes with a set of UI widgets as well as a library for DOM manipulation.[3]  These libraries are written in Python but are, like everything else, translated to Javascript for deployment.

The overall translation of individual components is managed by build[4] which also creates the necessary boilerplate code.  The result is a set of .html and .js files that can be served up by a Web server.

There are other components planned which have not been covered here such as server-side code for communication in client-server applications.
[overview]

Building User Interfaces with Pyjamas

The ui module contains all of the main classes you need to create your user interface. At first, this module can be a quite confusing because of the number of classes defined and the lack of good documentation strings. To become familiar with the user interface side of Pyjamas, you might like to refer to the Pyjamas User Interface Showcase. You might find the ui module class hierarchy useful. Additionally, there is API documentation on pyjd.org, along with a tutorial on how to create your own interactive widget.

Useful Links