# class `GridView(ScrollableView)`

A GridView is a user-defined view structured as a grid of equal-sized cells. Abstract methods are provided for drawing the contents of a cell and detecting mouse clicks in a cell based on their row and column numbers.
Note: Don't confuse this with the Grid class, which is a container for laying out other components in a grid.
The extent of a GridView is managed through the `num_rows`, `num_columns` and `cell_size` properties. The `extent` property inherited from ScrollableView should not be changed directly.

## Constructor

> `GridView(num_rows, num_columns, cell_size)`
>   Creates a grid view whose extent initially covers the specified number of rows and columns.

## Properties

> `num_rows`
>   Number of rows in the view's extent.
> `num_columns`
>   Number of columns in the view's extent.
> `cell_size`
>   The size of each cell. A tuple (width, height).
> `backcolor`
>   Color with which to fill the background of a cell before calling `draw_cell()`, or `None` for no automatic background fill.

## Abstract Methods

> `draw_cell(`canvas`,` row_number`,` column_number`,` cell_rect`)`
>   Should draw the specified cell inside the given rectangle.
> `click_cell(`row_number`,` column_number`,` event`)`
>   Called when a mouse_down event occurs in a cell.

## Methods

> `cell_rect(`row_number`,` column_number`)`
>   Returns the rectangle corresponding to the cell at the given row and column numbers.
> `cell_containing_point(`point`)`
>   Returns a tuple (row_number, column_number) indicating the cell in which the given point lies.