2014-03-31 49 views
1

我在連接到接收器的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) 

回答

0

不,這是不可能的。

首先,信號可以連接到許多不同的插槽(以及其他信號)。所以,即使Qt提供了一個用於檢索信號連接到的接收器列表的API(但它沒有),您仍然需要一些方法來選擇您感興趣的特定接收器。也就是說,您需要事先知道它的名字,或者已經有一個參考。

因此,保留您自己對接收器的引用是您唯一的選擇。或者換句話說:如果你想斷開/重新連接一個信號,不要將它連接到一個匿名的可調用...