我正在尝试通过信号将前端生成的列表发送到后端。但是,当信号到达后端的函数时(仅接受一个参数),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]
我确定我遗漏了一些明显的东西,但我看不到,特别是因为我正在与一个几乎相同的例子进行比较。