我有一個wx.ListBox,我希望用戶從中選擇,就好像他們按住CTRL鍵一樣。所以 - 如果你點擊一個沒有被選擇的項目,它將被選中(不需要修改其他選擇),並且如果你點擊一個選定的項目,它將被取消選擇(同樣沒有修改其他選擇)。在多個選擇的wx.ListBox中點擊CTRL的行爲
代碼來創建列表框是:
self.myListBox = wx.ListBox(self,
-1,
choices=self.keys,
style = wx.LB_HSCROLL
| wx.LB_MULTIPLE
| wx.LB_NEEDED_SB
| wx.LB_SORT)
self.Bind(wx.EVT_LISTBOX, self.OnSelection, self.myListBox)
問題/問題:
是否已有一個簡單的方法來做到這一點?
wx.LB_MULTIPLE
或wx.LB_EXTENDED
看起來像他們可能是我想要的,但我已經嘗試了兩個,它似乎並沒有改變任何東西。文檔中的描述也有點模糊 - 兩者之間的區別究竟是什麼?我知道可以得到
event.GetSelection()
所選項目的ID,但如果我嘗試執行上述邏輯,即:if self.myListBox.IsSelected(idx): self.myListBox.Deselect(idx) else: self.myListBox.Select(idx)
該事件已經解僱,所以它只是將取消一切只是選擇。在此之前嘗試致電
event.Skip()
,但也沒有運氣。有沒有辦法阻止它這樣做?我注意到,當拖動鼠標來選擇多個
event.GetSelection()
會得到正確的ID的上升 - 即3, 2, 1, 0
- 但延續它只會顯示第 -0, 0, 0, 0
。我猜這只是打印出列表中的第一個項目 - 是否有辦法從事件對象中獲取列表(而不是調用self.myListBox.GetSelections()
)?
我正在運行Linux和wxPython版本2.6.4.0。
是的,我知道這是舊的,但升級是不是一種選擇這個項目目前。另外 - 你能否定義「正常工作」的含義?在2.8.11中有請求的行爲嗎? – whrrgarbl
我可以按CTRL +點擊切換選擇 –
是的,這也適用於我。對不起,我想我並不清楚 - 我想要做的就是模擬那種行爲,而不是用戶實際上按下CTRL鍵。 – whrrgarbl