import multiprocessing import PIL from corners import Corners from gui import gui class Core: corners=Corners() tresW=60.0 tresB=30.0 @staticmethod def setCorners(corners): Core.corners=corners @staticmethod def setTresholds(tresB=None,tresW=None): if tresB is not None: Core.tresB=tresB if tresW is not None: Core.tresW=tresW msgQueue=multiprocessing.Queue() guiQueue=multiprocessing.Queue() incomingEvent=multiprocessing.Event() guiEvent=multiprocessing.Event() frame=PIL.Image.open("../images/7.jpg") guiProc=multiprocessing.Process(name="gui",target=gui,args=(guiQueue,guiEvent,msgQueue,incomingEvent)) guiProc.start() guiQueue.put(("setCurrentFrame",(frame,None),dict())) guiEvent.set() while True: incomingEvent.wait() msg=msgQueue.get() if msgQueue.empty(): incomingEvent.clear() print(msg) # !! always pass object copies, don't share instances """ core ==== corners grid go imageAnalyzer gui === a) keeps references to important objects and uses them b) gets and sets all relevant data through method calls with core GUI <- addCorner(corner) -> redrawImgView(img,grid) <- refreshTresholds(tresB,tresW) BoardView -> redrawState(go) """