PythonWorks, by PythonWare, the company of Python luminary Fredrik Lundh, is currently only available for Windows, although a Linux version has been promised before the end of 2000. It's easily the most expensive IDE for Python: At $395, it's four times as expensive as the other commercial IDE, Wing IDE. PythonWorks certainly looks expensive. It has a modern browser-like interfacehere is not even a token adherence to any user interface consistency guidelines. It's hard to believe that this is a tkInter application, considering its clean and crisp appearance. PythonWorks does look like it's designed for absolute newcomers to programming, with its permanent help and large, friendly buttons. PythonWorks comes bundled with Python 1.5.2.
The PythonWorks window is separated in four vertical stripsfrom left to right: the project browser, an icon bar, the "pad", and the information browser. There is little in the manner of menus: Most tasks are performed by clicking on hyperlinks that appear in the "pad". This pad is where most of the action happens. It can appear as a web page with information, a text editor, a Python code editor, an image viewer, a layout editor, or as the source pane of the debugger. This is also the worst fault of the PythonWorks interface: You can look at only one resource at a time, which is to say that you cannot have two files open at the same time, side by side. In my opinion, this makes PythonWorks unsuitable for professional development work. (Although it's nothing newJBuilder 3.5 has a similar faulty design, as do a number of other IDEs.)
PythonWorks has a nice little editor (see Figure 1). You can choose between Emacs and notepad keybindings. In a future release, it should be possible to develop custom keybindings. Syntax highlighting and autoindent is perfectly done (it knows to "deindent" if you type elif, for instance). The editor isn't customizable through something as easy as a dialog windowyou need to work with an editprefs Python script. Some nitpicks are that you're expected to know that the very, very small letters in the upper-left corner should be clicked to change keybindings, and that the very, very small flag icon can be clicked to run the editprefs script to change, for instance, the proportional font to a monospaced font. An absolute disaster is that PythonWorks forces you to use tabs instead of spaces for indenting. The fact that tabs are evil is accepted by most serious development shops around the world. Forced use of tabs makes it very difficult to work with existing code. There is also no auto-completion, a feature notoriously difficult to achieve with Python.
The PythonWorks Editor
This is simple: PythonWorks doesn't provide a path or class browser. A good class browserwhere you can see the structure of your code in a tree, with the documentation of the docstrings and arguments to the functionsis one of the most productive features an IDE can provide, and the lack of one is a serious minus.
The PythonWorks philosophy is to contain everything that belongs to a Python project in a repository. Currently, a repository is simply a directory on the hard disk, but PythonWare is working on integration of CVS and RCS, allowing for transparent development with more than one developer. Importing existing code is easy (but watch out for the tab versus spaces issue!). Projects have a kind of "homepage", where you can edit several administrative issues (see Figure 2). When the project is finished and the work can be released, you can use PythonWorks to automatically build a release, be it a source release, a set of compiled or compressed Python files, or a "real" executable. This works very well, and is a very good and professional feature, unique to PythonWorks.
The project handling "homepage"
The PythonWare debugger is the easiest to use that I've ever seen (see Figure 3). Other Python debuggers seldom know where to stopif you're not careful, you're deep in the debugger code before you know it, or in a system library. The interface is clear and helpful, and the option to run the program in slow, fast, or real-time motion is extremely useful when studying the flow of the program. Due to the unfortunate web browser-like design, however, you're forced to keep the tracer pop-up on top of your source code. Compared to the Wing IDE debugger, it lacks somewhat in advanced features, but it is very usable to the programming novice.
A very user-friendly debugger
PythonWorks is the only IDE to offer an integrated GUI layout designer (see Figure 4). Unfortunately, it can only be used to create GUIs for the antiquated tkInter toolkit, and it offers few widgets. TkInter offers automatic layout management (which helps when resizing windows, for instance), but again, this is very basic, and nothing compared to the combination of Qt Designer and the Python UI compiler. A good point is that you can run dialogs in a kind of test mode.
A simple GUI layout designer
The help system looks nice, although it's not really context sensitive. You can search both the local help, your project, the PythonWorks documentation, and the Web using this small pane. One thing that's missing in PythonWorks is a Python shell environment.