[PyKDE] Re: QCustomEvent::QCustomEvent ( Type type, void * data ) constructor no longer supported?

Phil Thompson phil at riverbankcomputing.co.uk
Wed Feb 16 09:45:15 GMT 2005


> The following code which used to work with PyQt 3.13 does not work with
> PyQt-commercial-snapshot-20050211:
>
> class PorcineEvent(qt.QCustomEvent):
>     StatusChangeType=qt.QEvent.User+10
>     CommandingChangeType=qt.QEvent.User+11
>     def __init__(self,type,data):
>         qt.QCustomEvent.__init__(self,type,data)
>
> Traceback (most recent call last):
>   File "c:\projects\LATTE\tools\taskEngine.py", line 74, in run
>     taskArgsKwargs[0](*taskArgsKwargs[1:-1], **taskArgsKwargs[-1])
>   File "c:\projects\LATTE\power\PorcinePanel.py", line 272, in __getStatus
>     qt.QApplication.postEvent(self,PorcineEvent(PorcineEvent.StatusChangeType,st
> atus))
>   File "c:\projects\LATTE\power\PorcinePanel.py", line 400, in __init__
>     qt.QCustomEvent.__init__(self,type,data)
> TypeError: too many arguments to QCustomEvent(), 1 at most expected

In SIP 4.2 enums are implemented as distinct types rather than integers so
that they nehave the same as they do in C++. After doing the addition, the
type of the above expression is integer, but it should be Type. Replace it
with, something like, the following.

    StatusChangeType = qt.QEvent.Type(qt.QEvent.User + 10)

The exception message looks wrong - I will check that.

Phil




More information about the PyQt mailing list