[PyQt] Issue with pyqtSignal
Detlev Offenbach
detlev at die-offenbachs.de
Sat Nov 5 13:58:32 GMT 2011
Am 05.11.2011 um 14:48 schrieb Phil Thompson:
> On Sat, 5 Nov 2011 10:05:45 +0100, Detlev Offenbach
> <detlev at die-offenbachs.de> wrote:
>> Am 04.11.2011 um 18:04 schrieb Phil Thompson:
>>
>>> On Fri, 4 Nov 2011 11:23:07 +0100, Detlev Offenbach
>>> <detlev at die-offenbachs.de> wrote:
>>>> Hello,
>>>>
>>>> I am defining a signal in one of my classes like this.
>>>>
>>>> tabRelocateRequested = pyqtSignal(int, int, int)
>>>>
>>>> When this signal is emitted, the first parameter is bigger than an int
>>>> (e.g. by using id()). This causes the signal receiver to get a first
>>>> parameter, that is different to the value given in the emit call. How
>>> can I
>>>> correct my code (code i within eric4/5).
>>>
>>> Use long instead of int?
>>
>> Python3 (forgot to mention that) doesn't know about long anymore. Maybe
>> the pyqtSignal code should work with long instead of int?
>
> The current behaviour is intentional as I considered this to be the least
> surprising when using a signal defined in Python in C++ code. Thinking
> about it now this is probably a very minor use case.
>
> At the moment a Python v2 int (actually implemented as a C++ long), a
> Python v2 long and a Python v3 int are all mapped to a C++ int.
>
> Maybe a better mapping should be Python v2 int to a C++ long, and a Python
> v2 long and a Python v3 int to a C++ long long.
I would opt for that solution.
> However it would still be
> possible to lose data for very big values - the only way to avoid that
> would be to pass the Python object itself which would make it impossible to
> reuse the class defining the signal from C++ code.
>
> As a work around you can always specify the C++ type as a string, eg.
> "long long".
In the mean time I implemented a workaround by converting to a str and in the receiver back to int. This preserves the value in Python3.
I found another similar issue with QByteArray.number().
>
> Thoughts?
>
> Phil
> _______________________________________________
> PyQt mailing list PyQt at riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
Detlev Offenbach
detlev at die-offenbachs.de
More information about the PyQt
mailing list