我試圖將自定義信號(在TCP
客戶端類中)連接到使用服務器發送的數據更新日誌的方法。PySide/Qt:將信號連接到插槽的參數太多?
這裏的TCP
客戶端類的聲明:
class CarSocket(QObject):
logSignal = Signal(str, str)
...
def __init__(self, ...):
super(CarSocket, self).__init__()
...
而且我試圖連接到logSignal
方法:
def addToLog(self, text, mode='NORMAL'):
if mode == 'RAW':
toAdd = text
else:
toAdd = "<p>{}</p> \n <hr> \n".format(text)
self.log.logEdit.append(toAdd)
所以,初始化我的應用程序,當我寫這行:
self.carSocket.logSignal.connect(self.addToLog)
我得到一個非常奇怪的bug恩我執行:
Traceback (most recent call last):
File "/home/ahmed/workspace/autonomee/main.py", line 286, in <module>
window = MainWindow()
File "/home/ahmed/workspace/autonomee/main.py", line 115, in __init__
self.carSocket.logSignal.connect(self.addToLog)
TypeError: connect() takes exactly 3 arguments (4 given)
[Finished in 0.5s with exit code 1]
任何人都可以幫助嗎?
必須注意的是,我已經成功地將一個自定義信號連接到另一個類(使用int,連接到類本身的一個方法),並且我沒有將默認信號與默認插槽連接的問題(如self.button.clicked.connect(self.edit.clear)
或類似的東西)
我測試了你的代碼,它對PySide和PyQt4都適用。你是否更新到最新版本的PySide? 順便說一句,我用[this](http://pastebin.com/JUEEDM5f)作爲一個粗略的例子來測試它,它基本上是正確的嗎? – BrtH 2013-05-14 10:10:02
您的示例工作原理:/(正如我所說的,我已經在另一個類上使用了另一個自定義信號,它完美地工作)。我也有PySide的最新版本:1.1.2 – halflings 2013-05-14 11:34:18
完整的源代碼(連接信號線)可以在https://github.com/halflings/autonomee找到(信號連接應該在' main.py';而'CarSocket'類是'carsocket.py' – halflings 2013-05-14 11:35:48