Dynamic Python binding for Qt Applications

PythonQt / News: Recent posts

Today we released PythonQt 3.2. It provides several bug fixes and improvements.

The main changes are: improvements and fixes to QMetaObject creation on Python classes derived from QObject wrapper generator now works with Qt 5.7 and Qt 5.8 various fixes in the type system new naming convention for the generated shared libraries to allow side-by-side PythonQt libraries for Qt4/Qt5 and Python 2 / Python 3

The PythonQt 3.1 zip file contained wrappers for two methods which are not part of Qt 5.6, so compilation failed on all platforms. I updated the svn and the PythonQt 3.1 release zip file. Sorry for the inconvenience!

PythonQt 3.1 has just been released and contains fresh wrappers for Qt 5.6.
It adds support for QtCore.Slot, QtCore.Signal and QtCore.Property and creates dynamic meta objects
when slots, signals or properties are added. PythonQt now contains wrappers for QtQml and QtQuick.
It does not yet support extending Qml with Python classes. The QtWebKit support is now made optional,
since Qt 5.6 does not come with QtWebKit anymore.... read more

The PythonQt 2.0 release contained a last minute feature that broke Python startup of PythonQt, this is fixed in the PythonQt 2.0.1 release and on SVN trunk. Lesson learned: Never add last minute features without running your unit tests.

This is the first PythonQt release that offers complete wrapping of the Qt framework using a wrapper generator. The core PythonQt library is still fully dynamic using the QMetaObject system, while the generator adds the parts of Qt which are not QObjects or signal/slots. Large parts of PythonQt have been rewritten since the last 1.1 release. PythonQt now supports multiple inheritance, polymorphic downcasting and a lot of other details which you can find in the documentation.
Deriving C++ classes from Python is now supported as well, but it is an experimental feature which has not been tested a lot.
A comparison to PyQt and PySide APIs has been added to the feature overview of the website.

This is a major release of Python Qt 1.0.
Various aspects have been improved both on functionality and performance side. A number of examples have been added to make it easier to get started.

A short overview of the new features:

- Support for ALL built-in Qt QVariant types (with complete API mapped to Python)
- Support for custom MetaTypes in QVariants
- Support for Constructors of QObject derived classes
- Easy way to wrap non-slot methods of existing QObject derived classes with "decorator slots"
- Support for static methods on QObjects and CPP classes (via decorator slots)
- Complete Qt GUI Constructors/Destructors support via QUILoader
- Support for CPP Constructors and easy manual wrapping of CPP API
- Complete support for Enum types
- Support for Qt namespace and Enums
- Support for loading python scripts from Qt resources (see examples)
- Auto-completion on the PyScriptConsole, which is now part of PythonQt core library
- support for dir() statement on all wrapped objects
- new help() method that prints details on wrapped objects... read more

This release adds support for access to children of QObjects,
allows to connect/disconnect Qt signals to Python objects from within Python and fixes several small bugs.
In addition to that, slots can not receive PyObject pointers directly, to get Python objects without any marshalling.

We are happy to announce the first public release of our dynamic binding of Qt4 to Python.
The first release is considered beta, but has been running in a commercial product for some month.
We are looking for Open Source developers to join and improve the project!

Community

Help

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

CountryState

JavaScript is required for this form.

I agree to receive quotes, newsletters and other information from sourceforge.net and its partners regarding IT services and products. I understand that I can withdraw my consent at any time. Please refer to our Privacy Policy or Contact Us for more details