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