Files @ 4c1ba49ea859
Branch filter:

Location: OneEye/src/gui/mainwindow.py - annotation

Laman
walking through the frames
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()

		self.bind("<Left>",lambda e: self.sendMsg("prevFrame"))
		self.bind("<Right>",lambda e: self.sendMsg("nextFrame"))

	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)