我尝试将一个自定义信号(在TCP
客户端类中)连接到一个方法,该方法使用服务器发送的数据更新日志。
下面是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)
当我执行它的时候,我得到了一个非常奇怪的错误:
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)
或类似的东西)时没有遇到任何问题
3条答案
按热度按时间qnzebej01#
我自己的代码遇到了这个问题,我想贡献出我认为是答案的东西。你的CarSocket类中还有一个名为“connect”的函数。试着重命名这个函数,看看会发生什么。
在我的例子中,一个发出信号的类也有一个“connect”函数,重命名它就解决了这个问题,因为你是从Signal()类型本身调用connect的,所以它不应该引起问题,但是看起来有问题。
eqqqjvef2#
当我尝试运行你的程序时,我得到了同样的错误。它看起来真的很奇怪。我发现这里只提到了一个,但没有解决方案。我可以建议你的一件事是老式的
connect
仍然可以正常工作:可能是PySide的bug。在评论中人们说他们在PySide1.1.2版没有问题。我也有这个版本和4.8.4版的Qt。
ftf50wuq3#
您必须在QObject中 Package 信号:
此调用将为:
应该可以...