Возникают проблемы с отображением окна / подключения к серверу в зависимости от расположения реактора.run ()
Если я размещаю реактор.Сервер чата регистрирует соединение как успешное, но пользовательский интерфейс не загружается.Если после sys.exit (app.exec _ ()) установить processor.run () , клиент не сможет подключиться, даже если пользовательский интерфейс загружается.
Какое лучшее решение?
from __future__ import print_function
from PyQt5 import QtCore, QtGui, QtWidgets
from twisted.internet import protocol
from twisted.protocols.basic import LineReceiver
from twisted.internet import reactor
from twisted.application import service, internet
class Ui_MainWindow(object):
#Note actual code lives here
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
#prepare the chat
reactor.connectTCP("localhost",1025,ChatClientFactory())
reactor.run()
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.lineEdit_2.setText(_translate("MainWindow", " Search "))
self.pushButton.setText(_translate("MainWindow", "Send"))
class ChatClient(LineReceiver):
def __init__(self, factory):
self.factory = factory
def lineReceived(self, data):
self.factory.text_from_patient = "{:>10}".format(data) # store the data so we can write to textedit
self.textEdit.appendPlainText("\n"+ self.factory.text_from_patient)
class ChatClientFactory(protocol.ClientFactory):
text_from_patient = " " # text to contain data sent from the user
def buildProtocol(self, addr):
return ChatClient(self)
def clientConnectionFailed(self, connector, reason):
reactor.stop()
def clientConnectionLost(self, connector, reason):
reactor.stop()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())