GUI Programming with
      Python and Qt

Quick Links

Python index
GUI Programming with Python Using the Qt Toolkit
BookDot, a Zope Booklog product
Database Objects
CGI scripting and MySQL
Python + KDE Tutorial
Python + KDE Resources
PyKDE example programs
Python and Qt2
PyKDE and PyQt news
A population simulation with Stackless Python
Drift: a language simulation in Python
Anonymous CVS access
web interface to CVS

Why Python?

A year ago (circa 1998) I found myself suddenly in need of a few Linux applications I could be sure no-one else would want to write for me. So I had to do it myself. Now, I do know a few programming languages, ranging from Pascal via PL/SQL to Visual Basic and a few others, too, and I have tried many more languages, like Java, C, C++, Snobol, Comal, Ada and Modula

But I don't have much spare time, so what I need is a language that would enable me to write working applications with even less code than Visual Basic. C and C++, and Pascal too, are just too time-consuming in the matter of string manipulation, and Visual Basic doesn't run under Linux, and it's far too bug-ridden, anyway. Perl did look attractive, but just when I was ready to order the Camel book, Neelakantan Krishmaswami suggested that I'd take a look at Python.

And that was the language I needed, of course. Easy to read, easy to write, easy to learn, decently object-oriented, powerfully dynamic and a dream in string handling. Yes, I immediately became an enthousiast. Python is ideal for writing CGI scripts, network applications, gui interfaces, text handling utilities and a whole lot more. It easily integrates with C and C++ libraries and the operating system. I started with CGI scripts, went on with gui applications and am now writing a custom XML web server.

For more information, go to: Python Compared to Other Languages


  • January 2003 - Added bookdot
  • 30-07-2001 - Added the world simulation
  • 27-03-2000 - Site reorganization.
  • 08-02-2000 - Added logo, kpybrowser, cgi example
  • 13-10-1999 - Creation

1999 Boudewijn Rempt

Python miscellanea

I've been working with Python for over a year now. My main technical interests are in user interfaces, database connectivity and network programming. In the past year I've worked with the PyQt and PyKDE gui bindings, MySQL, XML and html, and I've written CGI scripts and a special-purpose webserver.

GUI programming with Python and Qt

My book published! My book is published! After nine months of really intensive typing, GUI Programming with Python Using the Qt Toolkit is available. Published by Opendocs, you can buy a copy from the publishers, or from Amazon, or your local bookstore (they might have to order it, though: the isbn is 0-97003300-4-4).

I've ported and packaged the source code for all the examples in the book GUI Programming with Python using the Qt Toolkit has been ported to the latest version of PyQt and Qt.

Database Objects

Database Objects, or dbObj for short, is a sort of ultra-feather-weight middleware layer for database access from Python. It's handy to base actual business objects on, that then know how to select, update, delete and insert themselves. DbObj is a part of the Kura project, the linguistics database I'm building.


Kura is a linguistics database. It consists of several libraries and two interfaces: a KDE gui interface for entering and analyzing data, and an xml http server for presenting the linguistic data over the web, in an interactive, dynamic multi-media format. An experimental server may (or may not be - depending on the state of the project) running at: The server uses XML templates to dynamically create HTML pages.

CGI scripting and MySQL

CGI scripts remain popular, and for very good reasons. The first Python programs I developed were CGI scripts that talked to a MySQL database. I have annotated the source code for a simple MySQL/CGI application.

Class browser

Kpybrowser is a Python path, module and class browser, based on Guido van Rossem's Idle Python IDE. There are two versions: a KDE 1.x version, kpybrowser, and a Qt 2.x version, qpybrowser. Kpybrowsers is a very neat example of a well-integrated KDE Python application, complete with installation script, session management and desktop integration.

Python, Qt and KDE

My preferred gui interface is KDE and Qt. I've prepared a tutorial for Python and Qt v1.x, a page of resources and written several applications using the interface, such as kpybrowser.

PyKDE example programs

I've prepared a small set of applications that use the PyKDE and PyQt libraries, which can serve as examples or as tests when a new version of the bindings is released.

Python and Qt 2

With the release of the first version of the Python bindings to Qt 2 some things have changed and some new possibilities have been opened up, such as Unicode handling with QString.

PyKDE and PyQt news

Current development news - who's doing what, what's the status of the different projects, how are the bindings coming along, culled from the mailing list and other resources.

A population simulation with Stackless Python

Stackless Python is awesome - without exaggeration. This small program accompaties an article of mine on Stackless Python and microthreads for InformIT. It's a population simulation with a PyQt gui.

Drift: a language simulator in Python

Drift generates words based on a lexicon and a phonology with a certain amount of flexibility, compared to similar things like sounds.htm, which is a nice sound-change applier, langmaker, which is useful if you can run Visual Basic apps, or WordSynth which is a nice Perl script that generates words.

Drift requires Python 2.2.1, because I subclass lists and dicts a lot. Turns out you hardly ever need an iterator if you can subclass list...