我已经看到了很多关于这个主题的信息,但并不是这个问题的确切答案。我有大多数相反的问题。我想阻止 Enter 按钮在按钮具有焦点时单击按钮。为此,我不想简单地禁用按钮接受 Enter 按钮按下,而是我想有条件地在回调方法中捕获 Enter 按钮按下。现在,我已将以下事件绑定到我的 python 程序中的所有小部件:
parent.Bind(wx.EVT_CHAR, self.CharInputCallback)
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)
然而,当我按下回车键时,仍单击焦点按钮。总而言之,当我按下回车按钮时是否会引发额外的事件?如果是这样,特别是哪个事件是“虚拟点击”按钮?我发现的大多数论坛都讨论了如何识别何时按下回车按钮,但我想识别它并在按钮处于焦点时禁用它的默认操作。