我有一個多選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
事件的處理程序。這會起作用,但是您可以看到該項目被取消選擇然後重新選擇。可能有更好的方法,我不知道。
取消選擇似乎在鼠標按下時發生,並且直到鼠標按下(然後該項目被重新選擇)纔會調用該事件。
根據建議的解決方案,我現在有工作,與
xrc.XRCCTRL(self, "m_lstDataSource").Bind(wx.EVT_LEFT_DOWN, self.CheckDataSelect)
在我__init__
方法和
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 2011-03-10 22:36:21