Tôi đang cố gắng kết nối một tín hiệu tùy chỉnh (trong một lớp khách hàng TCP
) với một phương thức cập nhật nhật ký với dữ liệu được gửi bởi máy chủ và không có gì.PySide/Qt: Có quá nhiều đối số để kết nối tín hiệu với khe?
Đây là tuyên bố của lớp TCP
khách hàng:
class CarSocket(QObject):
logSignal = Signal(str, str)
...
def __init__(self, ...):
super(CarSocket, self).__init__()
...
Và phương pháp Tôi đang cố gắng để kết nối với 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)
Vì vậy, tôi viết dòng này khi khởi tạo ứng dụng của tôi:
self.carSocket.logSignal.connect(self.addToLog)
Và tôi nhận được một lỗi thực sự lạ vi Tôi thực hiện nó:
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]
Bất cứ ai cũng có thể giúp đỡ? Cần phải lưu ý rằng tôi đã kết nối thành công tín hiệu tùy chỉnh trên một lớp khác (với int, được kết nối với một phương thức của lớp) và tôi không gặp vấn đề gì khi kết nối các tín hiệu 'mặc định' với các khe mặc định (như self.button.clicked.connect(self.edit.clear)
). hoặc một cái gì đó tương tự)
Tôi đã thử nghiệm mã của bạn và nó hoạt động tốt cho tôi, cả với PySide và PyQt4. Bạn có cập nhật lên phiên bản mới nhất của PySide không? BTW, tôi đã sử dụng [this] (http://pastebin.com/JUEEDM5f) làm ví dụ thô để kiểm tra nó, về cơ bản có chính xác không? – BrtH
Ví dụ của bạn hoạt động:/(và như tôi đã nói tôi đã làm việc với một tín hiệu tùy chỉnh khác, trên một lớp khác, hoạt động hoàn hảo). Tôi cũng có phiên bản mới nhất của PySide: 1.1.2 – halflings
Mã nguồn đầy đủ (trừ dòng kết nối tín hiệu) có thể được tìm thấy trên: https://github.com/halflings/autonomee (kết nối tín hiệu sẽ được thực hiện trên ' main.py'; và lớp 'CarSocket' nằm trong' carsocket.py' – halflings