我是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)
我想在默认情况下将焦点设置在“确定”按钮上,这样“输入”-Key将执行此按钮。我已经尝试添加这一行:
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键时,我必须引用这个编辑行。
答案 0 :(得分:2)
调用self.cmdOk.SetFocus()
应该这样做。
编辑:
如果您想通过文本字段处理输入,可以在绑定到wx.EVT_KEY_DOWN
的这些行上添加处理程序。
def on_key_down(event):
if event.GetKeyCode() == wx.K_RETURN:
self.EndModal(wx.ID_OK)
else:
event.Skip()