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