1
私はwxTreeCtrlを書いていました。私は65〜90の間のキーコード(Ascii:A-Z)のみを扱いたいと思っていました。 そして私は他のキーコードを自分で処理したくありません。私が65と90の間のキーを処理した後、どのように私のイベントを中止し、wxTreeCtrlの標準の "キーダウン"イベントを使用することができますか?wxPythonでのKeyDownイベントのオーバーライド
クラス定義:
class ConfigTreeCtrl(wx.TreeCtrl):
メソッドバインディング:
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self)
メソッドの定義:
あなたの助けをdef OnKeyDown(self, event):
now = time.time()
keyCode = event.GetKeyCode()
if (keyCode >= 65 and keyCode <= 90) or (keyCode >= 48 and keyCode <= 57):
if self.searchString == "":
self.searchString = chr(event.GetKeyCode())
elif (now - self.lastKeyDown) < 2:
self.searchString += str(chr(event.GetKeyCode()))
else:
self.searchString = str(chr(event.GetKeyCode()))
self.lastKeyDown = now
self.GetItem(self.searchString, self.GetRootItem())
おかげで、宜しく
トーマス・
私はすでにこれを試しています。文字を入力すると、選択の変更が正しく機能します。しかし、私が矢印キーを押すと、本当に奇妙な動作があります。 else文でExceptionを発生させると、ツリーは私のように動作します。イベント処理を中止する必要があるようです。 – Thomas
これでevent.Skipの後に戻ることができます。 –
ありがとうございます。今はうまくいきます;) – Thomas