[PySide] signal connection only works with lambda
Cristian.Maureira-Fredes at qt.io
Tue Aug 30 09:21:08 CEST 2022
On 8/30/22 00:08, Frank Rueter wrote:
> Hi all,
> probably a pre-coffee hiccup:
> I have this weird issue where my signal connection only works when
> utilising lambda, even though the data type sent by the signal is
> exactly what the receiving slot needs.
> This is my code:
> In a worker class (QRunnable) I emit this signal
> * tasks_data_available = QtCore.Signal(list)
Just a sanity check:
That's declared inside a class, but not inside any method, right?
> In my main widget I connect it like this:
> * worker.tasks_data_available.connect(self.__prep_task_data)
> the slot looks like this:
> * def __prep_task_data(self, task_list):
> * print(task_list)*
Is this method decorated with a `@Slot(list)` ?
def __prep_task_data(elf, task_list):
> I have done this countless times, but for some reason in this case the
> code never calls the slot when the QRunnable emits task_list.
> When I do this it works though:
> * worker.tasks_data_available.connect(lambda t:
This might be due to the lazy registration of the lambda as a Slot,
without properly going through the Slot-registration process.
> What am I missing? I should not have to use lambda in this case.
It might be the missing @Slot,
but let me know if that's not the case.
Dr. Cristián Maureira-Fredes
Senior R&D Manager
The Qt Company GmbH
Geschäftsführer: Mika Pälsi,
Juha Varelius, Jouni Lintunen
Sitz der Gesellschaft: Berlin,
Charlottenburg, HRB 144331 B
More information about the PySide