# Grid Overview¶

Grid and its related classes are used for displaying and editing tabular data.

Grid supports custom attributes for the table cells, allowing to completely customize its appearance and uses a separate grid table (GridTableBase -derived) class for the data management meaning that it can be used to display arbitrary amounts of data.

## Getting Started¶

For simple applications you need only refer to the Grid class in your code. This example shows how you might create a grid in a frame or dialog constructor and illustrates some of the formatting functions:

import wx
import wx.grid

class GridFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent)

# Create a wxGrid object
grid = wx.grid.Grid(self, -1)

# Then we call CreateGrid to set the dimensions of the grid
# (100 rows and 10 columns in this example)
grid.CreateGrid(100, 10)

# We can set the sizes of individual rows and columns
# in pixels
grid.SetRowSize(0, 60)
grid.SetColSize(0, 120)

# And set grid cell contents as strings
grid.SetCellValue(0, 0, 'wxGrid is good')

# We can specify that some cells are read.only

# Colours can be specified for grid cell contents
grid.SetCellValue(3, 3, 'green on grey')
grid.SetCellTextColour(3, 3, wx.GREEN)
grid.SetCellBackgroundColour(3, 3, wx.LIGHT_GREY)

# We can specify the some cells will store numeric
# values rather than strings. Here we set grid column 5
# to hold floating point values displayed with width of 6
# and precision of 2
grid.SetColFormatFloat(5, 6, 2)
grid.SetCellValue(0, 6, '3.1415')

self.Show()

if __name__ == '__main__':

app = wx.App(0)
frame = GridFrame(None)
app.MainLoop()


Here is a list of classes related to Grid:

## Column and Row Sizes¶

Note

This section will discuss the resizing of Grid rows only to avoid repetitions but everything in it also applies to grid columns, just replace Row in the method names with Col.

Initially all Grid rows have the same height, which can be modified for all of them at once using SetDefaultRowSize. However, unlike simpler controls such as wx.ListBox or wx.ListCtrl, Grid also allows its rows to be individually resized to have their own height using SetRowSize (as a special case, a row may be hidden entirely by setting its size to 0, which is done by a helper HideRow method). It is also possible to resize a row to fit its contents with AutoSizeRow or do it for all rows at once with AutoSizeRows.

Additionally, by default the user can also drag the row separator lines to resize the rows interactively. This can be forbidden completely by calling DisableDragRowSize or just for the individual rows using DisableRowResize.

If you do allow the user to resize the grid rows, it may be a good idea to save their heights and restore it when the grid is recreated the next time (possibly during a next program execution): the functions GetRowSizes and SetRowSizes can help with this, you will just need to serialize GridSizesInfo structure returned by the former in some way and deserialize it back before calling the latter.