2012-02-23 72 views
2

我正在爲KDE4編寫一個python plasmoid。我怎樣才能傳遞給一個插槽比信號在pyqt4中發送的參數多?

我有一個QHttp對象,它發出信號「done(布爾)」,我將它分配給我的functionB。我想傳遞給函數B的值也是。如果我使用lambda來傳遞值,那麼信號永遠不會觸發函數B.

def functionA(self): 
    self.http=QHttp() 
    ... 
    valueA="valueA" 
    self.connect(self.http, SIGNAL("done (bool)"), lambda valueA: self.functionB) 
    self.get("/myurl.html") 

def functionB(self, done, valueA): 
    ... 

任何想法?

回答

1

您的lambda不會調用functionB。嘗試如果這個工程:

lambda done: self.functionB(done, valueA) 

編輯。也許這種做法會更好:

def functionA(self): 
    self.http=QHttp() 
    ... 
    self.valueA="valueA" 
    self.connect(self.http, SIGNAL("done (bool)"), self.functionB) 
    self.get("/myurl.html") 

def functionB(self, done, valueA=None): 
    if valueA is None: 
     valueA = self.valueA 
    ... 
+0

謝謝你的工作。我也想斷開連接和self.disconnect(self.http,SIGNAL(「done(bool)」),lambda完成:self.functionB(done,valueA))不起作用。我該怎麼做? – volk 2012-02-23 13:45:41

+0

@volk你可以讓valueA成爲一個實例變量嗎? – 2012-02-23 14:00:04

+0

是的,我做了你的編輯,所以我可以簡單地斷開連接。非常感謝你。 – volk 2012-02-23 14:04:36

相關問題