from brewpi_win import Ui_MainWindow from PyQt5 import QtWidgets import sys from ws.client.ws_client import WsClient from ws.message import MessageDispatcher from queue import Queue import asyncio from ws.connection import IConnection class Window(QtWidgets.QMainWindow, Ui_MainWindow): def __init__(self): QtWidgets.QMainWindow.__init__(self) loop = asyncio.new_event_loop() self.msg_dispatch = MessageDispatcher(auto_subscribe=True, loop=loop) self.ws_client = WsClient(listener=self.msg_dispatch, loop=loop) self.msg_pot = self.msg_dispatch.msgio_get('Pot') self.msg_sensor = self.msg_dispatch.msgio_get('Sensor') self.msg_heater = self.msg_dispatch.msgio_get('Heater') # self.msg_pot.set_recv_handler(self.on_pot_changed) # self.msg_sensor.set_recv_handler(self.on_sensor_changed) # self.msg_heater.set_recv_handler(self.on_heater_changed) self.setupUi(self) self.actionStart.triggered.connect(self.connect) self.actionStop.triggered.connect(self.disconnect) self.send_data = Queue() def connect(self): self.ws_client.connect(uri="ws://localhost:8765") def disconnect(self): self.ws_client.disconnect() def on_pot_changed(self, msg): print("on_pot_changed") def on_sensor_changed(self, msg): print("on_sensor_changed") def on_heater_changed(self, msg): print("on_heater_changed") async def on_send(self): try: data = await asyncio.get_event_loop().run_in_executor(None, self.send_data.get, True, 1) return data except: return None def closeEvent(self, event): print("Exitting gracefully!") self.ws_client.disconnect() if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) win = Window() win.show() sys.exit(app.exec_()) print ("End of program.")