我是 wxpython 的新手,但我必须编辑一个(大)给定代码:
bsButtons = wx.BoxSizer(wx.HORIZONTAL)
self.cmdOk = wx.Button(self, label=_(u"Ok"))
self.cmdOk.Bind(wx.EVT_BUTTON, self.OnOk)
bsButtons.Add(self.cmdOk,
border=4,
flag=wx.RIGHT)
self.cmdCancel = wx.Button(self, label=_(u"Abbrechen"))
self.cmdCancel.Bind(wx.EVT_BUTTON, self.OnCancel)
bsButtons.Add(self.cmdCancel)
...
def OnOk(self, event):
self.EndModal(wx.ID_OK)
def OnCancel(self, event):
self.EndModal(wx.ID_CANCEL)
我想默认将焦点设置在“OK”按钮上,这样“Enter”键就会执行这个按钮。我已经尝试添加这一行:
self.cmdOk.SetDefault()
但这没有用。(没有错误,但按 Enter 没有效果)任何人都可以帮助我吗?谢谢!
编辑:我插入了以下内容:
self.Bind(wx.EVT_KEY_DOWN, self.on_key_down)
...
def on_key_down(self, event):
if event.GetKeyCode() == wx.WXK_RETURN:
self.EndModal(wx.ID_OK)
else:
event.Skip()
但这不起作用。缺少一些东西:我知道第一行必须如下所示:
self.button.Bind(wx.EVT_BUTTON, self.OnButton)
但我不知道我的情况是什么“按钮”?!
Edit2:最后它起作用了:
self.etcFormula.Bind(wx.EVT_KEY_DOWN, self.on_key_down)
etcFormula 是我正在谈论的编辑行(焦点所在的位置)。所以现在我明白了,当我想抓住 Enter 按钮时,我必须参考这个编辑行。