PySide:从插槽返回一个值

时间:2013-05-15 01:15:18

标签: python pyside signals-slots

Pyside documentation声明插槽可以有返回值,但我还没弄清楚它是如何制作的。

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

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

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

ret = foo.testSignal.emit()

但它不起作用。我的测试代码,herecrashesthis错误输出。感谢帮助!

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

按原样运行脚本:

  

foo.testSignal.emit()
  testSlot称为
  真的

2 个答案:

答案 0 :(得分:1)

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

如果你想一想,这可能会更清楚:

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

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

答案 1 :(得分:0)

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