Есть два окна интерфейса, первое показывается при старте скрипта, второе после нажатия кнопки. Но так же, после нажатия кнопки создается asyncio соединение, принимающие сигналы.
Проблема в том, что как только устанавливается соединение весь интерфейс pyqt5 зависает. В чем ошибка и как это исправить?
Основная программа
import sys
from PyQt5 import QtWidgets, QtGui, QtWidgets
import loginform2, mainclient2
import tclient2
class ClientWindow(QtWidgets.QMainWindow, mainclient2.Ui_MainWindow):
def __init__(self):
super(ClientWindow, self).__init__()
self.setupUi(self)
self.setupWidget = QtWidgets.QWidget(self)
self.config = loginform2.Ui_Form()
self.config.setupUi(self.setupWidget)
self.show()
self.centralwidget.setHidden(True)
self.config.pushButton.clicked.connect(self.start)
def start(self):
self.setupWidget.setHidden(True)
self.centralwidget.setVisible(True)
self.asynccode()
def asynccode(self):
import asyncio
asyncio.run(tclient2.main('127.0.0.1', 8888))
if __name__ == '__main__':
app = QtWidgets.QApplication([])
main_window = ClientWindow()
sys.exit(app.exec())
Код клиента
import asyncio
class aclient():
def __init__(self, host, port):
self.host = host
self.port = port
async def tcp_echo_client(self):
reader, writer = await asyncio.open_connection(self.host, self.port)
name = 'anonymous'
writer.write(name.encode())
while True:
await self.test(reader)
async def test(self, reader):
incoming_message = await reader.read(1024)
print('incoming message', incoming_message.decode())
async def main(host, port):
await aclient(host, port).tcp_echo_client()