检索已连接的接收器

时间:2014-03-31 19:43:21

标签: python pyside signals-slots

我在Pyside中有一个连接到接收器的小部件。 这个接收器是使用类似lambda的功能生成的。稍后,我想检索函数指针,断开它,做一些事情并重新连接它。 这可行吗?

    def GenVolCallbacks(RList,foo):
        def callme(hest):
            self.SliderChanged(RList,foo)
        return callme

...

x[-1].valueChanged.connect(GenVolCallbacks(x,foo))

然后我想做一些像

这样的事情
Fpointer = x[-1].valueChanged.connectedReceiver()
x[-1].valueChanged.disConnect(Fpointer)
AlotOfProcessing()
x[-1].valueChanged.connect(Fpointer)

1 个答案:

答案 0 :(得分:0)

不,这是不可能的。

首先,信号可以连接到许多不同的插槽(以及其他信号)。因此,即使Qt提供了一个API来检索信号连接到的接收器列表(它没有),你仍然需要有一些方法来选择你感兴趣的特定接收器。也就是说,你需要事先知道它的名称,或者已经有了它的参考。

因此,保持自己对接收器的引用是唯一的选择。换句话说:如果你想断开连接/重新连接信号,不要将它连接到匿名可调用...