PyQt project is a set of Python bindings for the Qt toolkit. The bindings are implemented as a set of Python modules: qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml, and contains 300 classes and over 5,750 functions and methods.
PyQt also implements the qtext Python module. PyQt project is a set of Python bindings for the Qt toolkit.
PyQt is licensed under the GNU GPL (for UNIX/Linux and MacOS/X), under the Qt Non-commercial License (for use with the Qt v2.3.0 non-commercial version for windows), under the Qt Educational License (for use with the educational edition of Qt for Windows), and under a commercial license (for Windows, UNIX/Linux and MacOS/X). You can purchase the commercial version of PyQt here.
There is also an evaluation version of PyQt for Windows. This must be used with the corresponding evaluation version of Qt.
PyQt supports Qt versions 1.43 to 3.3.4 and Python versions 1.5 to 2.4. PyQt will normally work with newer versions of Qt and Python without change. If changes are required then these are normally added to snapshots within a few days. PyQt has been ported to Windows, MacOS/X and UNIX/Linux.
Note that PyQt does not yet support Qt v4.
PyQt has also been ported to Qt/Embedded and supports the Qt Palmtop Environment (aka Qtopia) through the qtpe Python module.
Binary packages of PyQt are provided for the non-commercial, educational, and evaluation versions of Qt for Windows.
The GPL version of PyQt is included with most of the main Linux distributions.
PyQt brings together the Qt C++ cross-platform toolkit and the cross-platform interpreted language Python.
Qt is primarily a GUI toolkit. It has a comprehensive set of widgets modelled as C++ classes including a fast canvas widget and a rich-text editor. Qt also includes many other useful classes implementing, for example, access to SQL databases and an XML DOM parser.
Qt classes employ a signal/slot mechanism for communicating between objects that is type safe but loosely coupled making it easy to create re-usable software components.
Qt also includes a graphical user interface designer and an associated utility uic than converts a design into the corresponding C++ code.
Python is a simple but powerful object-orientated language. Its simplicity makes it easy to learn, but its power means that large and complex applications can be created. Its interpreted nature means that Python programmers are every productive because there is no edit/compile/link/run development cycle.
Much of Python's power comes from its comprehensive set of extension modules providing a wide variety of functions including HTTP servers, XML parsers, database access, data compression tools and, of course, graphical user interfaces.
Extension modules are usually implemented in either Python, C or C++. Using tools such as SIP it is relatively straight forward to create an extension module that encapsulates an existing C or C++ library. Used in this way, Python can then become the glue to create new applications from established libraries.
PyQt combines all the advantages of Qt and Python. A programmer has all the power of Qt, but is able to exploit it with the simplicity of Python.
PyQt includes pyuic which takes the same designs that uic converts to C++, but converts them to the equivalent Python code. This makes PyQt particularly useful as a rapid prototyping environment for applications that will eventually be implemented in C++.