少し前に、
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()を呼んでおけばいいようだ。


コメント