我正在尝试wx.CheckListBox
在 Python 中实现一个,我希望始终检查列表中的某些项目。我曾尝试SetCheckedStrings(stringList)
在事件上使用wx.EVT_CHECKLISTBOX
。但是我得到了相反的结果,当我取消选中 中的一项时stringList
,它是未选中的;当我再次单击它进行检查时,它永远不会让我再次检查。
谁能给我一些提示,让某些项目wx.CheckListBox
始终被检查或使这些项目无法检查?
我正在尝试wx.CheckListBox
在 Python 中实现一个,我希望始终检查列表中的某些项目。我曾尝试SetCheckedStrings(stringList)
在事件上使用wx.EVT_CHECKLISTBOX
。但是我得到了相反的结果,当我取消选中 中的一项时stringList
,它是未选中的;当我再次单击它进行检查时,它永远不会让我再次检查。
谁能给我一些提示,让某些项目wx.CheckListBox
始终被检查或使这些项目无法检查?
If event steps in your way, you can always disable it for a while using self.box.Unbind(wx.EVT_CHECKLISTBOX)
. However this sample works for me even without unbinding:
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()