[PyQt] New vs new signals - signatures
Phil Thompson
phil at riverbankcomputing.com
Fri Jun 29 10:00:44 BST 2012
On Fri, 29 Jun 2012 18:02:47 +1000, John Floyd <jfloyd at bigpond.net.au>
wrote:
> On Fri, 29 Jun 2012 08:52:00 you wrote:
>> On Fri, 29 Jun 2012 17:22:51 +1000, John Floyd <jfloyd at bigpond.net.au>
>>
>> wrote:
>> > The question relates to the signatures used to connect overloaded
>>
>> signals.
>>
>> > What do you use for signature in the new signals. I have tried using
>>
>> the
>>
>> > same
>> > arguments that are specified in the old method but does not work.
>> >
>> > Eg an example from pyqwt
>> >
>> > old method
>> >
>> > self.picker.connect(self.picker, SIGNAL('selected(const
>> > QwtPolygon&)'),
>> >
>> > self.slotter)
> This works
>> >
>> > have tried
>> >
>> > self.picker.selected[QwtPolygon].connect(self.slotter)
>> >
>> > and
>> >
>> > self.picker.selected['QwtPolygon'].connect(self.slotter)
>> >
>> > with no success.
>>
>> Define "no success".
> The 2nd call results in "KeyError: 'there is no matching overloaded
> signal'"
What does the first call result in?
>> > the user docs does suggest "A type is either a Python type object or
a
>> > string
>> > that is the name of a C++ type"
>> >
>> > In this regard I have notices that in the code generated from the sip
>> > files,
>> > the pyqt4QtSignal defintion is
>> >
>> > selected(QwtPolygon)
>> >
>> > This is particularly confusing where for mappedtypes from a template
>>
>> where
>>
>> > the
>> > c++ variable is QArray<QwtDoublePoint> which is in the c++ signature
>> > whilst
>> > the python 'equivalent' is QwtQArrayQwtDoublePoint.
>> >
>> > Clarification would be very useful. At the moment I am not sure if
>>
>> there
>>
>> > is a
>> > coding problem (mine or at the sip end) or just my ignorance.
>>
>> They should be interchangeable. In the current of PyQt a bound signal
has
>> a "signal" attribute that is the corresponding C++ signal so you can
>> check
>> what signature is actually being used.
>
> Not sure exactly what you mean here, I have tried the following
>
> print self.picker.selected.signal
>
> and get "'PyQt4.QtCore.pyqtBoundSignal' object has no attribute
'signal'"
What version of PyQt? Like I said, this is available in the current
version.
Phil
More information about the PyQt
mailing list