Added the sample code from wxPython In Action to the samples dir
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
59
wxPython/samples/wxPIA_book/Chapter-14/grid_renderer.py
Normal file
59
wxPython/samples/wxPIA_book/Chapter-14/grid_renderer.py
Normal file
@@ -0,0 +1,59 @@
|
||||
import wx
|
||||
import wx.grid
|
||||
import random
|
||||
|
||||
class RandomBackgroundRenderer(wx.grid.PyGridCellRenderer):
|
||||
def __init__(self):
|
||||
wx.grid.PyGridCellRenderer.__init__(self)
|
||||
|
||||
|
||||
def Draw(self, grid, attr, dc, rect, row, col, isSelected):
|
||||
text = grid.GetCellValue(row, col)
|
||||
hAlign, vAlign = attr.GetAlignment()
|
||||
dc.SetFont( attr.GetFont() )
|
||||
if isSelected:
|
||||
bg = grid.GetSelectionBackground()
|
||||
fg = grid.GetSelectionForeground()
|
||||
else:
|
||||
bg = random.choice(["pink", "sky blue", "cyan", "yellow", "plum"])
|
||||
fg = attr.GetTextColour()
|
||||
|
||||
dc.SetTextBackground(bg)
|
||||
dc.SetTextForeground(fg)
|
||||
dc.SetBrush(wx.Brush(bg, wx.SOLID))
|
||||
dc.SetPen(wx.TRANSPARENT_PEN)
|
||||
dc.DrawRectangleRect(rect)
|
||||
grid.DrawTextRectangle(dc, text, rect, hAlign, vAlign)
|
||||
|
||||
|
||||
def GetBestSize(self, grid, attr, dc, row, col):
|
||||
text = grid.GetCellValue(row, col)
|
||||
dc.SetFont(attr.GetFont())
|
||||
w, h = dc.GetTextExtent(text)
|
||||
return wx.Size(w, h)
|
||||
|
||||
def Clone(self):
|
||||
return RandomBackgroundRenderer()
|
||||
|
||||
class TestFrame(wx.Frame):
|
||||
def __init__(self):
|
||||
wx.Frame.__init__(self, None, title="Grid Renderer",
|
||||
size=(640,480))
|
||||
|
||||
grid = wx.grid.Grid(self)
|
||||
grid.CreateGrid(50,50)
|
||||
|
||||
# Set this custom renderer just for row 4
|
||||
attr = wx.grid.GridCellAttr()
|
||||
attr.SetRenderer(RandomBackgroundRenderer())
|
||||
grid.SetRowAttr(4, attr)
|
||||
|
||||
for row in range(10):
|
||||
for col in range(10):
|
||||
grid.SetCellValue(row, col,
|
||||
"cell (%d,%d)" % (row, col))
|
||||
|
||||
app = wx.PySimpleApp()
|
||||
frame = TestFrame()
|
||||
frame.Show()
|
||||
app.MainLoop()
|
Reference in New Issue
Block a user