wxPython(Phoenix) キーボード操作は、wx.EVT_CHAR_HOOKを使うのが良さそう

少し前に、 wxPython(Phoenix) event.Skip()できないイベントで、イベントを他に渡す - ikapで、 KeyEventは伝播できないと述べていたが、特定のイベントではSkip()で伝播させられるようだ。

wx.EVT_KEY_DOWNでなく、wx.EVT_CHAR_HOOKにBindすれば良い。これは、入力というより、操作の場合に適していると思う。

全角入力時に、wx.EVT_KEY_DOWNが反応しないので、 なんとかハンドルできないかと画策していた時に、 wx.EVT_CHAR_HOOKというイベントだと反応することに気づいた。

wx.KeyEvent — wxPython Phoenix 3.0.3 documentationによると、 このイベントにより呼ばれるハンドラのKeyEventは、event.Skip()することが可能で、 ハンドルしなかったらevent.Skip()を呼べばいい。これなら、全角入力時も検出できる

一方で、wx.EVT_KEY_DOWNはそのままでは起こらなくなるので注意。起こすには、 event.DoAllowNextEvent()を呼んでおけばいいようだ。

タイトルとURLをコピーしました