[PyQt] Problem with signal and slot arguments
s.achterop at rug.nl
s.achterop at rug.nl
Tue Oct 29 10:08:29 GMT 2019
Hello list,
I am porting the lowenergyscanner example from qt5/qtconnectivity to PyQt5.
This as a first step to my own BLE app. I have a few problems with it.
First a problem with signals and slots.
The C++ code snippets were:
void addDevice(const QBluetoothDeviceInfo&);
...
connect(discoveryAgent, &QBluetoothDeviceDiscoveryAgent::deviceDiscovered,
this, &Device::addDevice);
...
void Device::addDevice(const QBluetoothDeviceInfo &info)
{
if (info.coreConfigurations() & QBluetoothDeviceInfo::LowEnergyCoreConfiguration)
setUpdate("Last device added: " + info.name());
}
Converted to PyQt5:
self.discoveryAgent = QtBt.QBluetoothDeviceDiscoveryAgent()
self.discoveryAgent.deviceDiscovered.connect(self.addDevice)
@pyqtSlot()
def addDevice(self, info):
if info.coreConfigurations() & QtBt.QBluetoothDeviceInfo.LowEnergyCoreConfiguration:
self.setUpdate(f'Last device added: {info.name}')
Running this gets me the following error:
TypeError: addDevice() missing 1 required positional argument: 'info'
With ipython3 this seems to be a warning, with python3 the progam aborts immediately.
It seems that the slot is being called without the info argument, but signal
QBluetoothDeviceDiscoveryAgent().deviceDiscovered
does have the argument.
What am I doing wrong here?
Thanks in advance,
Sietse
More information about the PyQt
mailing list