Pyside documentation声明插槽可以有返回值,但我还没弄清楚它是如何制作的。
我找不到任何可用的代码示例,所以我添加了一个装饰器,如文档所示:
def testSlot(self):
print('testSlot called')
return 'RETURN VALUE RETURN VALUE RETURN VALUE'
我正试图像这样捕获返回值:
ret = foo.testSignal.emit()
但它不起作用。我的测试代码,here,crashes,this错误输出。感谢帮助!
编辑:我删除了装饰器,它解决了崩溃问题,但它仍然没有返回我希望它返回的值。
按原样运行脚本:
foo.testSignal.emit()
testSlot称为
真的
答案 0 :(得分:1)
我担心你认为不可能的事情。 信号和插槽松散耦合在一起,因此发出信号不会直接调用插槽,因此无法检索“其”返回值。
如果你想一想,这可能会更清楚:
你可以连接两个不同的插槽(例如2个不同的类),它们会返回不同的值,到一个信号。两个返回值中的哪一个应该到达您尝试分配的变量?
你可能意味着this:这是完全不同的东西,并允许通过“名称”在MetaObject系统上“调用”该方法来返回值。
答案 1 :(得分:0)
也许您可以将要从testSlot函数返回的任何内容“注入”到发出信号的类的属性中