2

我正在尝试wx.CheckListBox在 Python 中实现一个,我希望始终检查列表中的某些项目。我曾尝试SetCheckedStrings(stringList)在事件上使用wx.EVT_CHECKLISTBOX。但是我得到了相反的结果,当我取消选中 中的一项时stringList,它是未选中的;当我再次单击它进行检查时,它永远不会让我再次检查。

谁能给我一些提示,让某些项目wx.CheckListBox始终被检查或使这些项目无法检查?

4

1 回答 1

0

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()
于 2013-04-12T10:27:55.070 回答