我在想在单击wx.Ok按钮时做一些判断,请问该注册哪个事件

我在想在单击wx.Ok按钮时做一些判断,请问该注册哪个事件

我在想在单击窗口Ok按钮时做一些判断,请问该注册哪个事件
我注册了这么一个事件,可是他不理我,
self.Bind(wx.EVT_BUTTON, self.OnCheck,id= wx.OK)


# --*-- 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):
        if len((str(self.vslename.GetValue())).strip())<1 :
            wx.MessageBox(u"请输入英文船名")
            return
        
        if len((str(self.voyage.GetValue())).strip())<1 :
            wx.MessageBox(u"请输入航次")
            return
        self.Destroy()
    def OnCheck(self,event):
        wx.MessageBox("","")
        print "*****************"
把id= wx.OK去掉
你这样写虽然可以,但是 wx.CANCEL 都执行了校验代码了
import wx
from wx.lib.fancytext import StaticFancyText
from edef.dev import Model
import re

class SaveAsDialog(wx.Dialog):
    def __init__(self, parent, ID):
        wx.Dialog.__init__(self,parent, ID, title="Save circuit as")

        self._model = Model()

        box = wx.BoxSizer(wx.VERTICAL)

        dlg_txt = """<font size="14">Enter new (full) circuit name.</font>
            For example "class.subclass.name". A class or circuit name
            can only contain a-z, A-Z, 0-9 and _."""

        txt = StaticFancyText(self, -1, dlg_txt)
        box.Add(txt, 0, wx.ALL, 10)

        self._name = wx.TextCtrl(self, -1)
        box.Add(self._name, 1, wx.EXPAND|wx.ALIGN_CENTER|wx.LEFT|wx.RIGHT|wx.BOTTOM, 20)

        bbox = self.CreateStdDialogButtonSizer(wx.OK|wx.CANCEL)
        box.Add(bbox, 1, wx.ALIGN_CENTER|wx.ALL, 10)

        self.SetSizer(box)
        box.Fit(self)

        self.Bind(wx.EVT_BUTTON, self.OnOk, id=wx.ID_OK)


    def validate(self, name):
        if not re.match("^[\w\_]+[\.[\w\_]+]*$", name): return False
        return True


    def circuitExists(self, name):
        uri = "circ://"+"/".join( name.split(".") )
        if self._model.checkURI(uri):
            return True
        return False


    def getSelection(self):
        # FIXME maybe we will return the uri
        return "circ://"+"/".join(self._name.GetValue().split("."))


    def OnOk(self, evt):
        name = self._name.GetValue()

        if not self.validate(name):
            wx.MessageBox("Invalid circuit name.\n"+
                           "The name should only constists of [a-zA-Z0-9_] "+
                           "seperated by dots!",
                          "Invalid circuit name", wx.OK|wx.ICON_ERROR, self, -1)
            return              
        
        if self.circuitExists(name):
            ret = wx.MessageBox("There exists allready a circuit named %s. Override?"%name,
                                "Override?", wx.YES|wx.NO|wx.ICON_QUESTION,
                                self, -1)
            if ret == wx.NO: return

        self.EndModal(wx.ID_OK)
不多说了,自己啃代码吧
没用过这个东西 self.SetButtonSizer(self.CreateStdDialogButtonSizer(wx.OK | wx.CANCEL))
都是自已创建的button