wx.TextCtrl 控件无法在打开时获得焦点

wx.TextCtrl 控件无法在打开时获得焦点

以下代码,我想在这个窗口Show()的时候,某一个控件自动获得焦点,可是我用了self.vslename.SetFocus() 这个方法,打开时并没有执行
另外,我想在单击确定时,进行是否为空校验,请问该注册码个事件

# --*-- encoding: UTF-8 --*--
import wx
import wxaddons.sized_controls as sc
class FormDialog(sc.SizedDialog):
    def __init__(self, parent, id):
        sc.SizedDialog.__init__(self, None, -1, u"请输入船名航次",
                        style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)
        
        pane = self.GetContentsPane()
        pane.SetSizerType("form")
        
        # row 1
        wx.StaticText(pane, -1, u"船名")
        self.vslename = wx.TextCtrl(pane, -1, "")
        self.vslename.SetSizerProps(expand=True)
        self.vslename.SetFocus()
        self.vslename.SetToolTipString(u"船舶名称或代码")
        # row 2
        wx.StaticText(pane, -1, u"航次")
        self.voyage = wx.TextCtrl(pane, -1, "")
        self.voyage.SetSizerProps(expand=True)
        self.voyage.SetToolTipString(u"航次")
        self.voyage.Lower()
        # row 3
        wx.StaticText(pane, -1, u"提单号")
        self.blno = wx.TextCtrl(pane, -1, "")
        self.blno.SetSizerProps(expand=True)
        self.blno.SetToolTipString(u"提单号")

        # add dialog buttons
        self.SetButtonSizer(self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL))
        
        # a little trick to make sure that you can't resize the dialog to
        # less screen space than the controls need
        self.Fit()
        self.SetMinSize(self.GetSize())
        
        self.Bind(wx.EVT_BUTTON, self.OnCheck,id= wx.OK)
        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
    def OnCloseWindow(self,event):
        print "--------------------"
        self.Destroy()
    def OnCheck(self,event):
        wx.MessageBox("","")
        print "*****************"

把self.vslename.SetFocus()放到self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)的下面看看?

是否为空校验不用注册事件吧,我一般就是直接去判断TextCtrl的GetValue()长度是否为0