이 차트가 있습니다. 이 도표에는 여러 나라가 있습니다. 비 기능 체크 박스의 색상을 변경하여 listctrl 객체 내에서 범례를 만들려고합니다.wxpython : 주어진 rgb 색상으로 listctrl 객체의 체크 박스 내부를 채우는 방법은 무엇입니까?
이러한 속성을 변경하는 wxpython 함수가 있습니까?
감사합니다.
이 차트가 있습니다. 이 도표에는 여러 나라가 있습니다. 비 기능 체크 박스의 색상을 변경하여 listctrl 객체 내에서 범례를 만들려고합니다.wxpython : 주어진 rgb 색상으로 listctrl 객체의 체크 박스 내부를 채우는 방법은 무엇입니까?
이러한 속성을 변경하는 wxpython 함수가 있습니까?
감사합니다.
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)
는 WX 데모에 wxRendererNative 봐()를 가지고, 당신은 할 수 있어야 OnPaint 이벤트에서 DC를 사용하고 선택한 이미지 (이 경우에는 다른 색상의 확인란)를 사용하여 렌더링 된 이미지를 다시 표시합니다. 이미지를 직접 만들거나 기본 색상을 원하는 색상으로 가리는 방법을 찾아야합니다 (직접 시도하지 않았 음). 그러나 어떤 방법으로도 가능해야합니다.
맞춤 체크 박스 컨트롤의 예를 보려면 http://wiki.wxpython.org/CreatingCustomControls을 체크 아웃 할 수도 있습니다. 이것이 목록 내에서 어떻게 적용될지는 확실하지 않습니다. 하지만 사용자 정의 확인란을 수행하기 위해 수행해야 할 작업에 대한 아이디어를 줄 수 있습니다.
@relima :이 답변으로 문제가 해결되면 답을 표시하십시오. – AWainb
OP는 아마도 wx.lib.mixins.listctrl 모듈의 CheckListCtrlMixin 클래스를 나타냅니다. – joaquin