2

wx.CheckListBoxリスト内のいくつかの項目を常にチェックしたいPythonで実装しようとしています。SetCheckedStrings(stringList)イベントで使ってみましたwx.EVT_CHECKLISTBOX。ただし、反対の結果が得られました。 の1つの項目のチェックを外すと、stringListチェックが外れます。それをもう一度クリックして確認すると、もう一度確認することはできません。

一部のアイテムをwx.CheckListBox常にチェックしたり、チェックできないようにしたりするためのヒントを誰か教えてもらえますか?

4

1 に答える 1

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