diff --git a/daemon/core/gui/coreclient.py b/daemon/core/gui/coreclient.py index bc9cdc37..a2a114ea 100644 --- a/daemon/core/gui/coreclient.py +++ b/daemon/core/gui/coreclient.py @@ -4,9 +4,10 @@ Incorporate grpc into python tkinter GUI import json import logging import os +from functools import partial from pathlib import Path from tkinter import messagebox -from typing import TYPE_CHECKING, Dict, Iterable, List, Optional +from typing import TYPE_CHECKING, Callable, Dict, Iterable, List, Optional import grpc @@ -84,7 +85,7 @@ class CoreClient: self.cancel_events() self._client.create_session(self.session_id) self.handling_events = self._client.events( - self.session_id, self.handle_events + self.session_id, self.handle_stream(self.handle_events) ) if throughputs_enabled: self.enable_throughputs() @@ -126,6 +127,9 @@ class CoreClient: for observer in self.app.guiconfig.observers: self.custom_observers[observer.name] = observer + def handle_stream(self, func: Callable) -> Callable: + return partial(self.app.after, 0, func) + def handle_events(self, event: core_pb2.Event): if event.session_id != self.session_id: logging.warning( @@ -199,7 +203,7 @@ class CoreClient: def enable_throughputs(self): self.handling_throughputs = self.client.throughputs( - self.session_id, self.handle_throughputs + self.session_id, self.handle_stream(self.handle_throughputs) ) def cancel_throughputs(self):