このトピックに関する多くの情報を見てきましたが、この質問に対する正確な答えはありません。私はほとんどの逆の問題を抱えています。ボタンにフォーカスがあるときに Enter ボタンがボタンをクリックしないようにしたい。これを行うには、単純にボタンが Enter ボタンの押下を受け付けないようにするのではなく、コールバック メソッドで Enter ボタンの押下を条件付きでキャプチャしたいと考えています。現在、Python プログラムのすべてのウィジェットに次のイベントをバインドしています。
parent.Bind(wx.EVT_CHAR, self.CharInputCallback)
Enter ボタンが押されると EVT_CHAR イベントが実際にスローされ、コールバック メソッドでコールバックを取得できます。私の問題は、意図的にイベントをスキップしていないにもかかわらず(イベントを転送する)、ボタンを仮想的にクリックするという入力ボタンの機能がまだ機能していることです。これが起こっているので、コールバックメソッドがイベントを転送していないと確信しています(テキストボックスに移動する文字をキャプチャしてこれをテストしました)、入力ボタンがキャプチャしていない追加のイベントをスローすると思われます. 入力ボタンからの「仮想クリック」を防ぐために、追加の次のイベントをバインドしてキャプチャしようとしました。
parent.Bind(wx.EVT_TEXT_ENTER, self.CharInputCallback)
parent.Bind(wx.EVT_KEY_UP, self.CharInputCallback)
parent.Bind(wx.EVT_KEY_DOWN, self.CharInputCallback)
しかし、Enter キーを押すと、フォーカスのあるボタンがクリックされたままになります。要約すると、入力ボタンを押したときにスローされる追加のイベントはありますか? もしそうなら、特にどのイベントがボタンを「仮想的にクリック」していますか? 私が見つけたほとんどのフォーラムでは、入力ボタンが押されたことを認識する方法について議論していますが、ボタンがフォーカスされているときはそれを認識してデフォルトのアクションを無効にしたいと考えています。