maze-solver/graphics.py

47 lines
1.2 KiB
Python

from typing import Dict
from tkinter import Canvas
from line import Line
from cell import CellWallLabels, CellWall
class Graphics(Canvas):
def __init__(self, container, background="white", width=800, height=800) -> None:
super().__init__(container)
self.config(
bg=background,
width=width,
height=height,
)
def redraw(self) -> None:
"""
redraw redraws all the graphics in the window.
"""
self.update_idletasks()
self.update()
def draw_line(
self,
line: Line,
fill_colour: str = "black",
width: int = 2
) -> None:
"""
draws a line onto the canvas.
"""
self.create_line(
line.point_a.x, line.point_a.y,
line.point_b.x, line.point_b.y,
fill=fill_colour,
width=width,
)
def draw_cell_walls(self, walls: Dict[CellWallLabels, CellWall]) -> None:
"""
draws the walls of a cell onto the canvas.
"""
for label in CellWallLabels:
self.draw_line(
line=walls[label].get_line(),
fill_colour=walls[label].get_line_colour(),
)