PySide:从插槽返回值

问题描述 投票:4回答:2

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称为真实

python pyside signals-slots
2个回答
1
投票

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

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.