私はwxWidgetsライブラリを使用していくつかのWindowsアプリをコーディングしていますが、何か面白いことにこだわっています。
def HandleDblclick (self, event):
self.ItemActivation (event.GetItem ())
def HandleKeydown (self, event):
keyc = event.GetKeyCode ()
if keyc == 13:
self.ItemActivation (event.GetItem ())
elif keyc == 32:
self.ItemSelection (event.GetItem ())
self.sbar.SetStatusText (str (keyc) + " was pressed.")
def HandleRclick (self, event):
self.ItemSelection (event.GetItem ())
(はい、Pythonです)。ItemActivation()とItemSelection()はすべての汚い仕事をします。ただし、マウスボタンを押したときのみです。キーを入力すると、次の出力が得られます。
File "C:\Python27\lib\site-packages\wx-2.8-msw-unicode\wx\_controls.py", line 5315, in GetItemPyData
return _controls_.TreeCtrl_GetItemPyData(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "param" failed at ..\..\src\msw\treectrl.cpp(1083) in wxTreeCtrl::SetItemData(): failed to change tree items data
TreeCtrlをコーディングしようとしています。面白いことに、それでもツリーは拡張されます(キーを入力)が、アイテムの選択(スペース)はまったく機能しません。
何が起こっているのか、そしてその理由は?wxWidgetsはイベントを2回処理しようとしていると思います。1回はデフォルトのハンドラーで、2回は私のものです。しかし、私が正しければ、wx.TreeCtrlのデフォルトのキーボードイベント処理を無効にする方法は?
前もって感謝します。