2011-03-23 1 views

답변

0

CheckBox가 작동하지 않는다고 생각합니다. 배경 색상을 변경하면 플랫폼마다 다른 효과가 나타나며 위젯의 상자 부분 만 변경하는 것은 확실하지 않습니다. ListCtrl 또한 매우 제한적입니다. 내장 된 일을 아무것도 경우

, 당신이 사용 ScrolledPanel과의 StaticText 같은 것을 시도 할 수 :

import wx.lib.scrolledpanel as sp 

SAMPLE_DATA = [('Antarctica', 'Green'), 
       ('Afghanistan', 'Maroon'), 
       ('Belguim',  'Blue'), 
       ('Canada',  'Red'), 
       ('India',  'Sea Green'), 
       ('Mexico',  'Grey'), 
       ('Mongolia',  'Black'), 
       ('New Zealand', 'Orange'), 
       ('Turkey',  'Purple'),] 

class Legend(sp.ScrolledPanel): 
    def __init__(self, parent, id, data=SAMPLE_DATA): 
     sp.ScrolledPanel.__init__(self, parent, id) 

     self.sizer = wx.BoxSizer(wx.VERTICAL) 

     for d in data: 
      item = d[0] 
      color = d[1] 

      linesizer = wx.BoxSizer(wx.HORIZONTAL) 
      box = wx.StaticText(self, wx.ID_ANY, ' ', size=(10,10)) 
      box.SetBackgroundColour(color) 
      text = wx.StaticText(self, wx.ID_ANY, item) 
      linesizer.Add(box, 0, flag=wx.EXPAND|wx.ALL, border=2) 
      linesizer.Add(text, 1, flag=wx.EXPAND) 
      self.sizer.Add(linesizer, 0, wx.EXPAND) 

     self.SetSizer(self.sizer) 
     self.sizer.Fit(self) 
     self.SetupScrolling(scroll_y=True) 
+0

OP는 아마도 wx.lib.mixins.listctrl 모듈의 CheckListCtrlMixin 클래스를 나타냅니다. – joaquin

0

는 WX 데모에 wxRendererNative 봐()를 가지고, 당신은 할 수 있어야 OnPaint 이벤트에서 DC를 사용하고 선택한 이미지 (이 경우에는 다른 색상의 확인란)를 사용하여 렌더링 된 이미지를 다시 표시합니다. 이미지를 직접 만들거나 기본 색상을 원하는 색상으로 가리는 방법을 찾아야합니다 (직접 시도하지 않았 음). 그러나 어떤 방법으로도 가능해야합니다.

맞춤 체크 박스 컨트롤의 예를 보려면 http://wiki.wxpython.org/CreatingCustomControls을 체크 아웃 할 수도 있습니다. 이것이 목록 내에서 어떻게 적용될지는 확실하지 않습니다. 하지만 사용자 정의 확인란을 수행하기 위해 수행해야 할 작업에 대한 아이디어를 줄 수 있습니다.

+0

@relima :이 답변으로 문제가 해결되면 답을 표시하십시오. – AWainb

관련 문제