I am not 100% sure what you are after here, but having done something similar you need will need the following functions :
Where GridLeftBorder and GridTopBorder are the "gaps" between the left and top of your windows and the first cell in your grid.
def GridXYtoScreenXY( gridx, gridy):
return gridx + cellWidth + GridLeftBorder, gridy+cellHeight+GridTopBorder
ScreenXYtoGridXY( screenx, screeny):
return int((screenx - GridLeftBorder)/cellWidth), int((screeny - GridTopBorder)/cellHeight)
CellWidth and CellHeight are hopefull self explanatory.
Coordinates start from zero (of course).
Using those functions you can work out where to put the text on screen, and which grid item the user is hovering over.