Python 如何突出显示wx.Grid单元格中的单个字符?

Python 如何突出显示wx.Grid单元格中的单个字符?,python,wxpython,wxwidgets,Python,Wxpython,Wxwidgets,我目前正在编写一个蛋白质组覆盖率分析工具(如果你不知道它是什么,它看起来。基本上,我必须呈现大量明显随机的文本,并突出显示其中的各个部分。我使用一个wx.Grid,禁用细胞轮廓,以有组织的方式呈现文本(因为wx.RichTextCtrls无法正确地将突出显示的文本隔开,叹气。)然而,在wx.Grids(和wx.XLSGrids等)的许多功能中有一些选项可以高亮显示整个单元格,我找不到一种方法来高亮显示单元格中的特定文本。有什么方法可以做到这一点吗?也许吧。我所知道的最近的一件事是网格小部件的wx

我目前正在编写一个蛋白质组覆盖率分析工具(如果你不知道它是什么,它看起来。基本上,我必须呈现大量明显随机的文本,并突出显示其中的各个部分。我使用一个wx.Grid,禁用细胞轮廓,以有组织的方式呈现文本(因为wx.RichTextCtrls无法正确地将突出显示的文本隔开,叹气。)然而,在wx.Grids(和wx.XLSGrids等)的许多功能中有一些选项可以高亮显示整个单元格,我找不到一种方法来高亮显示单元格中的特定文本。有什么方法可以做到这一点吗?

也许吧。我所知道的最近的一件事是网格小部件的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演示中的示例)?由于它基于许多文本编辑器中使用的闪烁文本组件,因此它应该能够满足您的需要。