也許,我所知道的是最接近的事在自定義呈現在wxPython中演示了網格控件。查看源,它似乎可以用DC來繪製不同顏色的文字。這裏」這是演示中的一個片段:
class MyCustomRenderer(gridlib.PyGridCellRenderer):
def __init__(self):
gridlib.PyGridCellRenderer.__init__(self)
def Draw(self, grid, attr, dc, rect, row, col, isSelected):
dc.SetBackgroundMode(wx.SOLID)
dc.SetBrush(wx.Brush(wx.BLACK, wx.SOLID))
dc.SetPen(wx.TRANSPARENT_PEN)
dc.DrawRectangleRect(rect)
dc.SetBackgroundMode(wx.TRANSPARENT)
dc.SetFont(attr.GetFont())
text = grid.GetCellValue(row, col)
colors = ["RED", "WHITE", "SKY BLUE"]
x = rect.x + 1
y = rect.y + 1
for ch in text:
dc.SetTextForeground(random.choice(colors))
dc.DrawText(ch, x, y)
w, h = dc.GetTextExtent(ch)
x = x + w
if x > rect.right - 5:
break
希望這會幫助您開始。如果這不適合你,那麼你可能不得不拿出你自己的渲染器。
你有沒有一起來看看更豐富文本格式** **其他文本控件(這將是wx.StyledTextCtrl,查找例如,在wxPython的演示)?由於它基於許多文本編輯器中使用的Scintilla文本組件,因此它應該能夠執行您所需的操作。 – nepix32 2014-12-04 16:27:12