如何解决不能同时使用 PyQt5 和 Eventlet
我想在 Windows 上用 Python 创建一个 SocketIO 服务器,作为我正在编写的 SocketIO 客户端的模拟器。服务器使用 eventlet
侦听本地端口 0.0.0.0。模拟器使用 PyQt5,有两个按钮。一个按钮从服务器发出一条消息,另一个按钮从服务器发出不同的消息。
执行后,客户端连接到服务器没有问题,但 QDialog 挂起且 QPushButtons 不显示。
如果我注释掉以 eventlet =
开头的行,则 QDialog 显示没有问题,但 [显然] 客户端无法连接到服务器。
有什么建议可以解决这个问题,以便我可以从客户端连接并通过单击 QPushButtons 发出服务器消息?这是我的服务器脚本:
from PyQt5.QtWidgets import QPushButton,QDialog,QApplication
import socketio,sys,eventlet
class My_Server(QDialog):
def __init__(self,parent=None):
super(My_Server,self).__init__(parent)
self.setwindowTitle("My SocketIO Server")
self.resize(300,150)
self.move(300,200)
self.btn1 = QPushButton(self)
self.btn1.setText('Msg 1')
self.btn1.move(50,75)
self.btn1.clicked.connect(self.send_btn1)
self.btn2 = QPushButton(self)
self.btn2.setText('Msg 2')
self.btn2.move(175,75)
self.btn2.clicked.connect(self.send_btn2)
self.show()
self.sio = socketio.Server()
self.serverapp = socketio.WsgiApp(self.sio,static_files={'/': {'content_type': 'text/html','filename': 'index.html'}})
eventlet.wsgi.server(eventlet.listen(('',5000)),self.serverapp)
def send_btn1(self):
self.sio.emit('message1',{"Message 1": "Hello"})
def send_btn2(self):
self.sio.emit('message2',{"Message 2": "World"})
if __name__ == '__main__':
app = QApplication(sys.argv)
form = My_Server()
form.show()
sys.exit(app.exec_())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。