Issue
The Pyside documentation states that slots can have return values, but I have yet to figure out how make it do so.
I couldn't find any usable code samples on this, so I've added a decorator as the docs suggest:
def testSlot(self):
print('testSlot called')
return 'RETURN VALUE RETURN VALUE RETURN VALUE'
And I'm trying to capture the return value like this:
ret = foo.testSignal.emit()
But it's not working. My test code, which you can find here, also crashes with this error output. Help is appreciated!
Edit: I've removed the decorator, which solves the crashing issue, but it still doesn't return the value I want it to return.
Running the script as is give me this:
foo.testSignal.emit()
testSlot called
True
Solution
I'm afraid what you think is not possible. Signals and slots are loosely coupled together, so emitting a signal does not directly call a slot, and therefore cannot retrieve "its" return value.
This might be clearer if you think about this:
You can connect 2 different slots (of e.g. 2 different classes), which return different values, to one signal. Which of the two return values are supposed to reach the variable you try to assign?
What you probably mean is this: This is something completely different, and allows return values via "invoking" the method over the MetaObject system by "name".
Answered By - nerdoc
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.