イベントが邪魔になる場合は、 を使用していつでも一時的に無効にすることができますself.box.Unbind(wx.EVT_CHECKLISTBOX)
。ただし、このサンプルは、バインドを解除しなくても機能します。
import wx
CHOICES = ["One", "Two", "Three", "Four", "Five"]
ALWAYS_ON = ["One", "Three"]
class MainWindow(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = wx.Panel(self)
self.box = wx.CheckListBox(self.panel, choices=CHOICES)
self.sizer = wx.BoxSizer()
self.sizer.Add(self.box)
self.panel.SetSizerAndFit(self.sizer)
self.Show()
self.box.Bind(wx.EVT_CHECKLISTBOX, self.OnCheckBoxList)
self.box.SetCheckedStrings(ALWAYS_ON)
def OnCheckBoxList(self, e):
index = e.GetSelection()
label = self.box.GetString(index)
if label in ALWAYS_ON:
self.box.Check(index)
app = wx.App(False)
win = MainWindow(None)
app.MainLoop()