我是新來的wxPython,但我有編輯(大)定的代碼:Howto SetDefault()?
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」-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是我說的是編輯行(其中重點是)。所以現在我明白了,當我想要捕捉輸入按鈕時,我必須引用此編輯行。
'button'只會是'wx.Button'類的實例,所以你的情況'self.cmdOk'和'self.cmdCancel'是等價的,但你已經爲這些如此定義的處理器我不太確定你現在想做什麼? – redrah
我想我沒有解釋清楚:重點在編輯線上,但是當我按下「Enter」鍵時,「OnOk」命令將被執行。比較我的第二次編輯。 – Munchkin