2014-12-03 60 views
0

我目前正在寫一個蛋白質組覆蓋率分析工具(如果你不知道那是什麼,它看起來something like this。基本上,我有呈現明顯的隨機文字量大,並強調它的各個部分。我使用wx.Grid與蜂窩小區m概述禁用呈現一種有組織的方式文本(因爲wx.RichTextCtrls無法正常等寬高亮顯示的文本,嘆了口氣。)然而,儘管wx.Grids的許多功能(和wx.XLSGrids間等),有選擇以突出整個細胞,我不能找到一種方法,在細胞內突出顯示特定的文字。有沒有辦法實現這一目標?我怎樣才能在wx.Grid的細胞彰顯個性角色?

+0

你有沒有一起來看看更豐富文本格式** **其他文本控件(這將是wx.StyledTextCtrl,查找例如,在wxPython的演示)?由於它基於許多文本編輯器中使用的Scintilla文本組件,因此它應該能夠執行您所需的操作。 – nepix32 2014-12-04 16:27:12

回答

0

也許,我所知道的是最接近的事在自定義呈現在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 

希望這會幫助您開始。如果這不適合你,那麼你可能不得不拿出你自己的渲染器。