首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SetDefault()?

如何使用SetDefault()?
EN

Stack Overflow用户
提问于 2012-09-07 20:57:24
回答 1查看 1.2K关注 0票数 1

我是wxpython的新手,但我必须编辑一个(大的)给定代码:

代码语言:javascript
复制
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)

..。

代码语言:javascript
复制
def OnOk(self, event):
    self.EndModal(wx.ID_OK)
def OnCancel(self, event):
    self.EndModal(wx.ID_CANCEL)

我想在默认情况下将焦点设置在"OK“按钮上,这样"Enter"-Key就会执行这个按钮。我已经尝试添加了这一行:

代码语言:javascript
复制
self.cmdOk.SetDefault()

但这并不管用。(没有错误,但按Enter键没有效果)谁能帮我?谢谢!

编辑:我插入了以下内容:

代码语言:javascript
复制
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()

但这是行不通的。这里缺少一些东西:我知道第一行必须是这样的:

代码语言:javascript
复制
self.button.Bind(wx.EVT_BUTTON, self.OnButton)

但我不知道我的箱子里是什么?!

Edit2:它终于可以工作了:

代码语言:javascript
复制
self.etcFormula.Bind(wx.EVT_KEY_DOWN, self.on_key_down)

etcFormula是我所说的编辑行(焦点所在)。所以现在我明白了,当我想要捕捉Enter-按钮时,我必须引用这一编辑行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-07 21:06:45

调用self.cmdOk.SetFocus()应该可以做到这一点。

编辑:

如果您希望通过文本字段处理enter,那么可以沿着绑定到wx.EVT_KEY_DOWN的这些行添加一个处理程序。

代码语言:javascript
复制
def on_key_down(event):
    if event.GetKeyCode() == wx.K_RETURN:
        self.EndModal(wx.ID_OK)
    else:
         event.Skip()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12318581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档