Próbuję podłączyć niestandardowy sygnał (w klasie klienta TCP
) do metody, która aktualizuje dziennik z danymi wysłanymi przez serwer i cokolwiek.PySide/Qt: Zbyt wiele argumentów, aby podłączyć sygnał do gniazda?
Oto deklaracja klasy TCP
klienta:
class CarSocket(QObject):
logSignal = Signal(str, str)
...
def __init__(self, ...):
super(CarSocket, self).__init__()
...
A metoda Próbuję połączyć się 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)
Więc piszę ten wiersz podczas inicjalizacji mój wniosek:
self.carSocket.logSignal.connect(self.addToLog)
I dostaję naprawdę dziwny błąd, który pl Wykonuję go:
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]
Ktoś może pomóc?
Należy zauważyć, że udało mi się już połączyć sygnał niestandardowy z inną klasą (z int, połączony z metodą samej klasy) i że nie mam problemów z podłączeniem sygnałów "domyślnych" do domyślnych gniazd (takich jak self.button.clicked.connect(self.edit.clear)
lub coś podobnego)
Przetestowałem twój kod i działało dobrze dla mnie, zarówno z PySide, jak i PyQt4. Czy jesteś zaktualizowany do najnowszej wersji PySide? BTW, użyłem [tego] (http://pastebin.com/JUEEDM5f) jako prostego przykładu do przetestowania, czy to w zasadzie poprawne? – BrtH
Twoje przykłady działają:/(i jak już powiedziałem, pracuję już z innym niestandardowym sygnałem, na innej klasie, która działa idealnie). Mam również najnowszą wersję PySide: 1.1.2 – halflings
Pełny kod źródłowy (bez linii łączącej sygnał) można znaleźć na: https://github.com/halflings/autonomee (połączenie sygnału powinno być wykonane na ' main.py', a klasa 'CarSocket' jest w' carsocket.py' – halflings