我目前正在编写一个蛋白质组学覆盖分析工具(如果你不知道它是什么,它看起来something like this。基本上,我必须提供大量明显的随机文本,并突出显示各个部分我正在使用wx.Grid,禁用单元格轮廓以有组织的方式呈现文本(因为wx.RichTextCtrls无法正确地等宽高亮显示文本,叹息。)然而,在wx.Grids的许多功能中(和wx.XLSGrids等)有突出整个单元格的选项,我找不到突出单元格中特定文本的方法。有没有办法实现这个目标?
答案 0 :(得分:0)
也许。我所知道的最接近的是Grid小部件的wxPython演示中的Custom Renderer。看看源代码,它似乎是用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
希望这有助于您入门。如果这对您不起作用,那么您可能需要提出自己的渲染器。