pyqt和websocket客户端。在后台听websocket

我有一个PyQt Gui应用程序。此应用程序有一个主窗口,应在启动后打开。

此应用程序应监听websocket。

我试着解决它是这样的:

...

if __name__ == '__main__':

app = QtGui.QApplication(sys.argv)

window = Window()

window.show()

websocket.enableTrace(True)

ws = websocket.WebSocketApp("ws://localhost:8080/chatsocket",

on_message = on_message,

on_error = on_error,

on_close = on_close)

# ws.on_open = on_open

ws.run_forever()

sys.exit(app.exec_())

但是,启动应用程序后,主窗口没有打开。

如果没有“ ws.run_forever()”行,则打开主窗口,但应用程序不侦听websocket。

我需要在“背景”中收听网络套接字吗?你能帮助我吗?

PS :(对不起,我的英语)

回答:

感谢enginefree。

我做这个

class Window(QtGui.QDialog):

def __init__(self, parent=None):

super(Window, self).__init__()

self.thread = ListenWebsocket()

self.thread.start()

...

class ListenWebsocket(QtCore.QThread):

def __init__(self, parent=None):

super(ListenWebsocket, self).__init__(parent)

websocket.enableTrace(True)

self.WS = websocket.WebSocketApp("ws://localhost:8080/chatsocket",

on_message = self.on_message,

on_error = self.on_error,

on_close = self.on_close)

def run(self):

#ws.on_open = on_open

self.WS.run_forever()

def on_message(self, ws, message):

print message

def on_error(self, ws, error):

print error

def on_close(self, ws):

print "### closed ###"

if __name__ == '__main__':

app = QtGui.QApplication(sys.argv)

QtGui.QApplication.setQuitOnLastWindowClosed(False)

window = Window()

window.show()

sys.exit(app.exec_())

以上是 pyqt和websocket客户端。在后台听websocket 的全部内容, 来源链接: utcz.com/qa/419049.html

回到顶部