grid_renderer.py

来自「wxPython的基本示例程序」· Python 代码 · 共 60 行

PY
60
字号
import wximport wx.gridimport randomclass 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()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?