我正在尝试连接到一个扫描仪,它提供一个通过apiport的REST Api。在我可以这样做之前,我必须使用PyQt5连接到扫描仪并签署challange。我有一个C++代码作为示例,但是我找不到相应的PyQt类/方法。
基本上,我正在寻找一种方法来替换C++中的这些行:
QWebSocket socket;
QString address = "127.0.0.1";
QString port = "1234";
connect(&socket,&QWebSocket::textMessageReceived,this,&Client::onTextMessageReceived);
socket.open(QUrl(QString("ws://%1:%2").arg(address).arg(port)));我的问题是这一行:
connect(&socket,&QWebSocket::textMessageReceived,this,&Client::onTextMessageReceived);有人能帮我解决这个问题吗?到目前为止,我只知道:(但它抛出了错误: TypeError: native Qt signal is not callable)
class Client(QtCore.QObject):
def __init__(self, parent):
super().__init__(parent)
self.client = QtWebSockets.QWebSocket("",QtWebSockets.QWebSocketProtocol.Version13,None)
#self.client.error.connect(self.error)
print("Trigger")
trigger = self.client.textMessageReceived()
#self.client.open(QUrl("ws://"+UDP_IP+":"+str(notificationsport)))
def ontextmsgreceived():
print("Text MSG received")
def close(self):
self.client.close()
global client
app = QApplication(sys.argv)
client = Client(app)
app.exec_()非常感谢你的帮助!
发布于 2018-02-10 01:32:20
在PyQt中,连接语法如下:
C++:
connect(sender, &Class_sender::some_signal, receiver, &Class_receiver::some_slot);python:
sender.some_signal.connect(receiver.some_slot)所以在你的例子中:
self.client.textMessageReceived.connect(self.ontextmsgreceived)另一个问题是,您的插槽是类的方法,因此第一个参数必须是self,此外,textMessageReceived信号发送一个文本作为参数,因此插槽必须具有相同的参数:
def ontextmsgreceived(self, message):
print("Text MSG received", message)https://stackoverflow.com/questions/48709399
复制相似问题