diff --git a/src/gui/boardview.py b/src/gui/boardview.py --- a/src/gui/boardview.py +++ b/src/gui/boardview.py @@ -7,19 +7,21 @@ class BoardView(ResizableCanvas): def __init__(self, master=None): super().__init__(master) + self._padding=24 self.configure(width=360,height=360,background="#ffcc00") - self._padding=24 - self._cellWidth=(self._width-2*self._padding)/18 - self._cellHeight=(self._height-2*self._padding)/18 - self._drawGrid() - def redrawState(self,gameState): - self.delete("black","white") + def redrawState(self,gameState,labels=dict()): + self.delete("black","white","label") for r,row in enumerate(gameState): for c,point in enumerate(row): - self._drawStone(r, c, point) + self._drawStone(r, c, point, labels.get((r,c))) + + def configure(self,*args,**kwargs): + super().configure(*args,**kwargs) + self._cellWidth=(self._width-2*self._padding)/18 + self._cellHeight=(self._height-2*self._padding)/18 def _drawGrid(self): padding=self._padding @@ -57,12 +59,14 @@ class BoardView(ResizableCanvas): # @param r row coordinate, [0-18], counted from top # @param c column coordinate, [0-18], counted from left # @param color color indicator, go.BLACK or go.WHITE - def _drawStone(self, r, c, color): + def _drawStone(self, r, c, color, label=""): if color==BLACK: hexCode='#000000' + altCode='#ffffff' tag="black" elif color==WHITE: hexCode='#ffffff' + altCode='#000000' tag="white" else: return False @@ -70,6 +74,8 @@ class BoardView(ResizableCanvas): y=r*self._cellHeight+self._padding radius=self._cellWidth/2 self.create_oval(x-radius,y-radius,x+radius,y+radius,tags=tag,fill=hexCode) + if label: + self.create_text(x,y,text=label,tags="label",fill=altCode) def _onResize(self,event): super()._onResize(event)