pyqtSignal.emit正在发送参数,但是到达的功能是“缺少1个位置参数”

时间:2019-06-20 22:43:12

标签: python pyqt5

我正在尝试通过信号将前端生成的列表发送到后端。但是,当信号到达后端的函数时(仅接受一个参数),python表示该函数“缺少1个必需的位置参数”。

我试图在前端的emit中添加一个参数。如果我添加另一个参数,它说“信号有1个参数,但提供了2个”。

从我的前端:

import sys
from PyQt5.QtWidgets import (QLineEdit, QWidget, QVBoxLayout, QPushButton, QApplication)
from PyQt5.QtCore import pyqtSignal
from client.main import Client

client = Client


class ConnectionWindow(QWidget):

    host_port_signal = pyqtSignal(list)

    def __init__(self):
        super().__init__()
        self.host_text = QLineEdit(self)
        self.port_text = QLineEdit(self)
        self.connect_button = QPushButton('Conectar', self)
        self.connect_button.clicked.connect(self.connect_button_action)
        self.host_port_signal.connect(client.update_host_and_port)

        self.vertical_layout = QVBoxLayout()
        self.vertical_layout.addWidget(self.host_text)
        self.vertical_layout.addWidget(self.port_text)
        self.vertical_layout.addWidget(self.connect_button)
        self.setLayout(self.vertical_layout)

    def connect_button_action(self):
        self.host = self.host_text.text()
        self.port = self.port_text.text()
        self.host_port_signal.emit([self.host, self.port])


if __name__ == '__main__':
    app = QApplication(sys.argv)
    form = ConnectionWindow()
    form.show()
    sys.exit(app.exec_())

从我的后端开始:

import socket
from PyQt5.QtCore import QObject

class Client(QObject):

    def __init__(self):
        super().__init__()
        self.socket_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    def update_host_and_port(self, hostport):
        self.host = hostport[0]
        self.port = hostport[1]

我确定我遗漏了一些明显的东西,但我看不到,特别是因为我正在与一个几乎相同的例子进行比较。

0 个答案:

没有答案