我正在尝试在Python中实现wx.CheckListBox
,我希望列表中的某些项目始终被检查。我曾尝试在事件SetCheckedStrings(stringList)
上使用wx.EVT_CHECKLISTBOX
。但是我得到了相反的结果,当我取消选中stringList
中的一个项目时,它是未选中的;当我再次点击它来检查它时,它永远不会让我再次检查。
任何人都可以给我一些提示,让wx.CheckListBox
中的某些项目始终得到检查或使其无法检查吗?
答案 0 :(得分:0)
如果事件妨碍了您,您可以使用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()