Sto provando a collegare un segnale personalizzato (in una classe client TCP
) a un metodo che aggiorna un registro con i dati inviati dal server e quant'altro.PySide/Qt: troppi argomenti per collegare un segnale a uno slot?
Ecco la dichiarazione della classe TCP
client:
class CarSocket(QObject):
logSignal = Signal(str, str)
...
def __init__(self, ...):
super(CarSocket, self).__init__()
...
E il metodo che sto cercando di connettersi a 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)
Così, scrivo questa linea durante l'inizializzazione la mia domanda:
self.carSocket.logSignal.connect(self.addToLog)
E ottengo un bug davvero strano che it Lo eseguo:
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]
Chiunque può aiutare?
Deve essere notato che ho già collegato correttamente un segnale personalizzato su un'altra classe (con un int, collegato a un metodo della classe stessa) e che non ho problemi a collegare segnali "predefiniti" con slot predefiniti (come self.button.clicked.connect(self.edit.clear)
o qualcosa di simile)
Ho testato il codice e ha funzionato bene per me, sia con PySide che con PyQt4. Sei aggiornato all'ultima versione di PySide? BTW, ho usato [questo] (http://pastebin.com/JUEEDM5f) come un esempio grezzo per testarlo, è fondamentalmente corretto? – BrtH
I tuoi esempi funzionano:/(e come ho già detto sto già lavorando con un altro segnale personalizzato, su un'altra classe, che funziona perfettamente). Ho anche l'ultima versione di PySide: 1.1.2 – halflings
Il codice sorgente completo (meno la linea che collega il segnale) può essere trovato su: https://github.com/halflings/autonomee (la connessione del segnale dovrebbe essere fatta su ' main.py'; la classe 'CarSocket' è in' carsocket.py' – halflings