import threading import tkinter as tk import config from .mainwindow import MainWindow from .boardview import BoardView class GUI: def __init__(self): self.root = tk.Tk() self.root.title("OneEye {0}.{1}.{2}".format(*config.misc.version)) self._coreMessages=None self.mainWindow = MainWindow(self, master=self.root) self.root.columnconfigure(0,weight=1) self.root.rowconfigure(0,weight=1) self.root.bind("<>", lambda e: self.mainWindow.redrawImgView()) self.root.bind("<>", lambda e: print("fired receiveState")) def __call__(self,ownMessages,coreMessages): self._coreMessages=coreMessages self.listenerThread=threading.Thread(target=lambda: ownMessages.listen(self._handleEvent)) self.listenerThread.start() self.mainWindow.mainloop() def sendMsg(self,actionName,args=tuple(),kwargs=None): self._coreMessages.send(actionName,args,kwargs) def _handleEvent(self,e): actions={"setCurrentFrame":self._frameHandler, "setGameState":self._stateHandler} (actionName,args,kwargs)=e return actions[actionName](*args,**kwargs) def _frameHandler(self,newFrame): self.mainWindow.setCurrentFrame(newFrame) self.root.event_generate("<>") def _stateHandler(self,gameState): self.mainWindow.boardView.redrawState(gameState) gui=GUI()