Files
@ 9ab11204b0f9
Branch filter:
Location: OneEye/src/gui/__init__.py - annotation
9ab11204b0f9
1.7 KiB
text/x-python
StateBag exportuje záznam partie, BoardView zobrazuje pořadí tahů
0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 5f2136fcbebd 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 bc96e653888e 0d57edb8be11 8a0de753f06f 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 5f2136fcbebd 8a0de753f06f 0d57edb8be11 0d57edb8be11 8a0de753f06f 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 0d57edb8be11 9ab11204b0f9 9ab11204b0f9 9ab11204b0f9 0d57edb8be11 0d57edb8be11 | import threading
import tkinter as tk
import config
from .mainwindow import MainWindow
from .boardview import BoardView
from .settings import Settings
class GUI:
def __init__(self):
self.root = tk.Tk()
self.root.title("OneEye {0}.{1}.{2}".format(*config.misc.version))
self.root.option_add('*tearOff',False) # for menu
self._ownMessages=None
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("<<redrawImgView>>", lambda e: self.mainWindow.redrawImgView())
self.root.bind("<Left>",lambda e: self.sendMsg("prevFrame"))
self.root.bind("<Right>",lambda e: self.sendMsg("nextFrame"))
self.root.bind("<F12>",lambda e: Settings(self))
self.mainWindow.bind("<Destroy>",lambda e: self._ownMessages.send("!kill",("gui",)))
def __call__(self,ownMessages,coreMessages):
self._ownMessages=ownMessages
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("<<redrawImgView>>")
def _stateHandler(self,gameState,moves):
labels={(row,col):(i+1) for (i,(c,row,col)) in enumerate(moves)}
self.mainWindow.boardView.redrawState(gameState,labels)
gui=GUI()
|