2014-12-03 3 views
0

저는 현재 proteomic coverage 분석 도구를 작성하고 있습니다 (만약 당신이 그 단백질이 무엇인지 모른다면, something like this입니다.) 기본적으로 나는 많은 양의 무작위적인 텍스트를 제시해야하고, 다양한 부분을 강조해야합니다. (wx.RichTextCtrls가 강조 표시된 텍스트의 한 부분을 올바르게 고정하지 못하기 때문에) 조직 된 방식으로 텍스트를 표시하기 위해 셀 개요를 비활성화 한 상태로 wx.Grid를 사용합니다. 그러나 wx.Grids (및 wx.XLSGrids , 등등.) 전체 셀을 강조 표시하는 옵션이 있습니다. 셀 내의 특정 텍스트를 강조 표시하는 방법을 찾을 수 없습니다.이 방법을 사용할 수 있습니까?wx.Grid의 셀에있는 개별 문자를 어떻게 강조 할 수 있습니까?

+0

더 풍부한 텍스트 포맷을위한 ** 다른 ** 텍스트 컨트롤 (wx.StyledTextCtrl, wxPython 데모에서 예제를 찾으십시오)을 보셨습니까? 많은 텍스트 편집기에서 사용되는 Scintilla 텍스트 구성 요소를 기반으로하므로 필요한 작업을 수행 할 수 있어야합니다. – nepix32

답변

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 

시작하시는 것이 좋겠군요. 그것이 당신을 위해 작동하지 않는다면, 당신은 자신의 렌더러를 찾아야 할 것입니다.

관련 문제