でwx.ListBoxで行動をCTRL-クリック私は、彼らがCTRLキーを押したかのように中から選択するためのユーザーを希望wx.ListBoxを持っています。つまり、選択されていない項目をクリックすると、その項目は選択されず、選択した項目をクリックすると選択解除されます(他の項目を変更せずに)。複数選択
リストボックスを作成するためのコードは次のとおりです。
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
のように見えるかもしれませんが、私は両方を試しましたが、何も変わっていないようです。ドキュメントの記述は少しばかりで、2つの違いは何ですか?私は
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