在wxpython CheckListBox中,如何在选中一个框时自动取消另一个框的选中?
我有点困惑,不知道怎么动态获取每个框的状态变化。我也不明白怎么给复选框列表中的某一个框绑定事件。
我的目的是有几个框代表不同的参数:
A, B, C, D, E, 全选
默认情况下“全选”是被激活的,我希望如果选中了其他的框,“全选”能自动取消选中。
我该怎么做呢?
self.list_choice = ['A', 'B', 'C', 'D', 'E', 'All']
pos = (5, 20)
self.list_param = wx.CheckListBox(self, wx.ID_ANY, pos, wx.DefaultSize,
self.list_choice, style=1)
self.list_param.Check(5, True)
我无法在列表发生变化时注册这个变化,只能在另一个事件(比如“开始”)被调用时读取一次列表。
1 个回答
1
为什么不把你的 list_param
绑定到一个 wx.EVT_CHECKLISTBOX
事件上呢?这样的话,如果选中了其他选项,就会自动取消选中 All
,像这样做?
self.Bind(wx.EVT_CHECKLISTBOX, self.check_list_param, self.list_param)
def check_list_param(self, evt):
checked = self.list_param.GetChecked()
if len(checked) > 1 and 5 in checked:
self.list_param.Check(5, check=False)