4

Pyside文档指出插槽可以有返回值,但我还没有弄清楚它是如何做到的。

我找不到任何可用的代码示例,所以我按照文档的建议添加了一个装饰器:

def testSlot(self):
    print('testSlot called')
    return 'RETURN VALUE RETURN VALUE RETURN VALUE'

我正在尝试像这样捕获返回值:

ret = foo.testSignal.emit()

但它不起作用。我的测试代码(您可以在此处找到)也会因此错误输出而崩溃帮助表示赞赏!

编辑:我已经删除了装饰器,它解决了崩溃问题,但它仍然没有返回我希望它返回的值。

按原样运行脚本给我这个:

foo.testSignal.emit()
testSlot 称为
True

4

2 回答 2

4

恐怕你认为的不可能。信号和槽松散耦合在一起,因此发出信号不会直接调用槽,因此无法检索“其”返回值

如果您考虑一下,这可能会更清楚:

您可以将返回不同值的 2 个不同插槽(例如 2 个不同类)连接到一个信号。这两个返回值中的哪一个应该到达您尝试分配的变量?

您可能的意思是:是完全不同的东西,它允许通过“名称”在 MetaObject 系统上“调用”方法来返回值。

于 2013-06-10T07:46:37.690 回答
0

也许你可以“注入”你想从 testSlot 函数返回的任何东西到发出信号的类的属性中

于 2020-01-28T16:06:48.977 回答