나는 다중 선택 wxListBox를 가지고 있으며 적어도 하나의 목록에있는 항목이 선택되었다는 조건을 유지하고자합니다. 나는 시도했다적어도 하나의 항목을 wxListBox에서 선택 유지
def OnSelectDataSource(self, event):
datasourcelist = xrc.XRCCTRL(self, "m_lstDataSource")
if not event.IsSelection():
if len(datasourcelist.GetSelections()) == 0:
datasourcelist.Select(event.GetInt())
wx.EVT_LISTBOX
이벤트의 처리기로. 이 방법은 효과적이지만 항목을 선택 해제 한 다음 다시 선택하는 것을 볼 수 있습니다. 아마 내가 모르는 더 나은 방법이있을 것입니다.
마우스 누르기를 할 때 선택 취소가 발생했으며 마우스를 위로 올리면 항목이 다시 선택 될 때까지 이벤트가 호출되지 않습니다. 제안 된 솔루션을 기반으로
는, 지금 내 __init__
방법에
xrc.XRCCTRL(self, "m_lstDataSource").Bind(wx.EVT_LEFT_DOWN, self.CheckDataSelect)
함께 작업하고
def CheckDataSelect(self, event):
lstctrl = xrc.XRCCTRL(self, "m_lstDataSource")
pos = lstctrl.HitTest(event.GetPosition())
if lstctrl.GetSelections() == (pos,):
event.Skip(False)
else:
event.Skip()
이 작업은 마우스를 눕힐 필요가 있지만 마우스 업 이벤트가 아닙니다. – tkerwin