Qt Designer custom widgets (was Re: [PyKDE] Relaise of PyQt4?)

David Boddie david at boddie.org.uk
Wed Mar 8 18:12:31 GMT 2006


On Mon, 6 Mar 2006 14:07:44, Phil Thompson wrote:

> The first (and only planned) beta will be out this month. Current snapshots
> should be perfectly usable - but that's for others to say.
>
> All the structural changes are now in place, it's now only a question of
> going through the (very short) list of outstanding issues.

As you know, I was working on making changes to the way PyQt handles
meta-objects to enable things like properties and inheritance to be shown
correctly for Python widgets in Qt Designer. This required some changes
to the qobject.sip and qobjectdefs.sip files, as well as some nasty
patching tricks after SIP had generated the source code.

My plan was to work on this a bit more, but I ran into problems with
Python's garbage collector and didn't feel confident enough to tackle them.

Another approach I've since considered is to just implement a C++ plugin
to manage Python custom widgets. This "easy option" might be preferable
but depends on what people want or expect from Python widgets:

 1. Is it useful to allow Python subclasses of QObject to define their
    own Qt compatible properties? C++ subclasses declare properties with
    Q_PROPERTY. Python objects could just use descriptors and have them
    recognized when registered with the meta-object system.

 2. Is it useful to obtain information about the base classes of an
    object via Qt's meta-object system when Python's object system
    can provide that information in a more "Pythonic" way?

 3. Is it easier for tools like pyuic4 to initialize custom widget
    properties using Python's own property system or with Qt's property
    system? Would these tools be harder to write if you couldn't use
    just one scheme to access object properties regardless of the
    implementation language?

It turns out that getting Python custom widgets loaded in Qt Designer is
easy. The hard part is making them behave like good citizens there, so that
you can actually do useful things with them.

David




More information about the PyQt mailing list