import tkinter as tk from tkinter import N,S,E,W from .boardview import BoardView from .imgview import ImgView class MainWindow(tk.Frame): def __init__(self,parent,master=None): self.parent=parent tk.Frame.__init__(self, master) self.grid(column=0,row=0,sticky=(N,S,E,W)) self._createWidgets() def setCurrentFrame(self,frame): self.imgView.setImg(frame) def _createWidgets(self): # a captured frame with overlay graphics self._imgWrapper=tk.Frame(self,width=480,height=360) self.imgView=ImgView(self._imgWrapper,self) self._imgWrapper.grid(column=0,row=0,sticky=(N,S,E,W)) # board with detected stones self._boardWrapper=tk.Frame(self,width=360,height=360) self.boardView=BoardView(self._boardWrapper) self._boardWrapper.grid(column=1,row=0,sticky=(N,S,E,W)) # more controls below the board self.scaleTresB=tk.Scale(self, orient=tk.HORIZONTAL, length=200, from_=0.0, to=100.0, command=self.refreshTresholds) self.scaleTresW=tk.Scale(self, orient=tk.HORIZONTAL, length=200, from_=0.0, to=100.0, command=self.refreshTresholds) self.scaleTresB.set(30.0) # !! proper defaults self.scaleTresW.set(60.0) self.scaleTresB.grid(column=0,row=1,columnspan=2) self.scaleTresW.grid(column=0,row=2,columnspan=2) self.columnconfigure(0,weight=1) self.columnconfigure(1,weight=1) self.rowconfigure(0,weight=1) # render everything self.imgView.redraw() ## Redraws the current image and its overlay. def redrawImgView(self): self.imgView.redraw() def refreshTresholds(self,_): self.parent.sendMsg("setTresholds",tuple(),{"tresB":self.scaleTresB.get(), "tresW":self.scaleTresW.get()}) def sendMsg(self,actionName,args=tuple(),kwargs=None): self.parent.sendMsg(actionName,args,kwargs)