简体   繁体   中英

How to ignore EVT_WIZARD_PAGE_CHANGED event in wxPython wizard?

I'm using wx.adv.Wizard of wxPython to quickly create my interactive UI, and I want to add some checking process before the "wx.adv.EVT_WIZARD_FINISHED" event executed in final page. How should I ignore this event if the checking process are valid?

I already write some code for that but the wizard still closed.

# binding event
self.Bind(wx.adv.EVT_WIZARD_FINISHED, self.OnFinished)

# event catch
def OnFinished(self, event):
    if check_process:
        # the code I want to know how to ignore event?
        self.Destroy()
        event.Skip()

Updated: put python code

###########################################################################
## Class VisionTemplateWizard
###########################################################################

import wx
import wx.xrc
import wx.adv

class VisionTemplateWizard ( wx.adv.Wizard ):

    def __init__( self, parent, log=None):
        wx.adv.Wizard.__init__ ( self, parent, id = wx.ID_ANY, title = u"XXXXX", bitmap = wx.NullBitmap, pos = wx.DefaultPosition, style = wx.DEFAULT_DIALOG_STYLE )

        self.SetPageSize((800,500))
        self.m_pages = []

        self.m_wiz_seInitPosition = wx.adv.WizardPageSimple( self  )
        self.add_page( self.m_wiz_seInitPosition )

        bSizer14 = wx.BoxSizer( wx.VERTICAL )

        self.m_staticText9 = wx.StaticText( self.m_wiz_seInitPosition, wx.ID_ANY, u"XXXXX", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL )
        self.m_staticText9.Wrap( -1 )

        bSizer14.Add( self.m_staticText9, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5 )

        self.m_staticline8 = wx.StaticLine( self.m_wiz_seInitPosition, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
        bSizer14.Add( self.m_staticline8, 0, wx.EXPAND |wx.ALL, 5 )


        bSizer14.Add( ( 0, 0), 1, wx.EXPAND, 5 )

        self.m_staticText10 = wx.StaticText( self.m_wiz_seInitPosition, wx.ID_ANY, u"1. XXXXXXx.\n"
                                                                                   u"2. Xxxx\n"
                                                                                   u"3. XXXXXX", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.m_staticText10.Wrap( -1 )

        self.m_staticText10.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_ITALIC, wx.FONTWEIGHT_BOLD, False, wx.EmptyString ) )

        bSizer14.Add( self.m_staticText10, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5 )


        bSizer14.Add( ( 0, 0), 1, wx.EXPAND, 5 )

        bSizer15 = wx.BoxSizer( wx.HORIZONTAL )

        self.m_staticText11 = wx.StaticText( self.m_wiz_seInitPosition, wx.ID_ANY, u"XXXX", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.m_staticText11.Wrap( -1 )

        bSizer15.Add( self.m_staticText11, 0, wx.ALL, 5 )

        self.m_initCurRobotPose = wx.TextCtrl( self.m_wiz_seInitPosition, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY )
        bSizer15.Add( self.m_initCurRobotPose, 1, wx.ALL, 5 )


        bSizer14.Add( bSizer15, 0, wx.EXPAND, 5 )

        self.btn_CalibPose = wx.Button(self.m_wiz_seInitPosition, wx.ID_ANY, u"XXX", wx.DefaultPosition,wx.DefaultSize, 0)
        bSizer14.Add(self.btn_CalibPose, 0, wx.EXPAND, 5)

        self.btn_SetInitCurRobotPose = wx.Button( self.m_wiz_seInitPosition, wx.ID_ANY, u"XXXXX", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer14.Add( self.btn_SetInitCurRobotPose, 0, wx.EXPAND, 5 )

        bSizer14.Add( ( 0, 0), 1, wx.EXPAND, 5 )

        sbSizer3 = wx.StaticBoxSizer( wx.StaticBox( self.m_wiz_seInitPosition, wx.ID_ANY, u"XXXX" ), wx.VERTICAL )

        bSizer16 = wx.BoxSizer( wx.HORIZONTAL )

        self.m_staticText12 = wx.StaticText( sbSizer3.GetStaticBox(), wx.ID_ANY, u"XXXX", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.m_staticText12.Wrap( -1 )

        bSizer16.Add( self.m_staticText12, 0, wx.ALL, 5 )

        self.m_initCurVisionPose = wx.TextCtrl( sbSizer3.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY )
        bSizer16.Add( self.m_initCurVisionPose, 1, wx.ALL, 5 )


        sbSizer3.Add( bSizer16, 0, wx.ALIGN_CENTER|wx.EXPAND, 5 )


        sbSizer3.Add( ( 0, 0), 1, wx.EXPAND, 5 )


        bSizer14.Add( sbSizer3, 0, wx.EXPAND, 5 )


        self.m_wiz_seInitPosition.SetSizer( bSizer14 )
        self.m_wiz_seInitPosition.Layout()
        bSizer14.Fit( self.m_wiz_seInitPosition )
        self.m_wiz_putCalibBoard = wx.adv.WizardPageSimple( self  )
        self.add_page( self.m_wiz_putCalibBoard )

        bSizer9 = wx.BoxSizer( wx.VERTICAL )

        self.m_staticText4 = wx.StaticText( self.m_wiz_putCalibBoard, wx.ID_ANY, u"XXXX", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL )
        self.m_staticText4.Wrap( -1 )

        bSizer9.Add( self.m_staticText4, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5 )

        self.m_staticline3 = wx.StaticLine( self.m_wiz_putCalibBoard, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
        bSizer9.Add( self.m_staticline3, 0, wx.EXPAND |wx.ALL, 5 )

        self.m_bitmap3 = wx.StaticBitmap( self.m_wiz_putCalibBoard, wx.ID_ANY, wx.Bitmap( u"./ui/img/put_calib_img2.png", wx.BITMAP_TYPE_ANY ), wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer9.Add( self.m_bitmap3, 1, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL|wx.EXPAND, 5 )


        self.m_wiz_putCalibBoard.SetSizer( bSizer9 )
        self.m_wiz_putCalibBoard.Layout()
        bSizer9.Fit( self.m_wiz_putCalibBoard )
        self.m_wiz_calcResulotion = wx.adv.WizardPageSimple( self  )
        self.add_page( self.m_wiz_calcResulotion )

        bSizer10 = wx.BoxSizer( wx.VERTICAL )

        self.m_staticText5 = wx.StaticText( self.m_wiz_calcResulotion, wx.ID_ANY, u"XXXX", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL )
        self.m_staticText5.Wrap( -1 )

        bSizer10.Add( self.m_staticText5, 0, wx.ALIGN_CENTER|wx.ALL, 5 )

        self.m_staticline4 = wx.StaticLine( self.m_wiz_calcResulotion, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
        bSizer10.Add( self.m_staticline4, 0, wx.EXPAND |wx.ALL, 5 )


        bSizer10.Add( ( 0, 0), 1, wx.EXPAND, 5 )

        self.m_staticText6 = wx.StaticText( self.m_wiz_calcResulotion, wx.ID_ANY, u"XXXX", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.m_staticText6.Wrap( -1 )
        bSizer10.Add( self.m_staticText6, 0, wx.ALIGN_CENTER|wx.ALL, 5 )

        self.m_calcVisionResolution = wx.TextCtrl( self.m_wiz_calcResulotion, wx.ID_ANY, u"0.0", wx.DefaultPosition, wx.DefaultSize, wx.TE_CENTER|wx.TE_READONLY )
        bSizer10.Add( self.m_calcVisionResolution, 0, wx.ALIGN_CENTER|wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )
        bSizer10.Add( ( 0, 0), 1, wx.EXPAND, 5 )

        self.m_staticText61 = wx.StaticText( self.m_wiz_calcResulotion, wx.ID_ANY, u"XXXX", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.m_staticText61.Wrap( -1 )
        bSizer10.Add( self.m_staticText61, 0, wx.ALIGN_CENTER|wx.ALL, 5 )

        self.m_calcVisionResolutionStdev = wx.TextCtrl( self.m_wiz_calcResulotion, wx.ID_ANY, u"0.0", wx.DefaultPosition, wx.DefaultSize, wx.TE_CENTER|wx.TE_READONLY )
        bSizer10.Add( self.m_calcVisionResolutionStdev, 0, wx.ALIGN_CENTER|wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )
        bSizer10.Add( ( 0, 0), 1, wx.EXPAND, 5 )

        self.m_calcRes = wx.Button(self.m_wiz_calcResulotion, wx.ID_ANY, u"XXX", wx.DefaultPosition,wx.DefaultSize, 0)
        bSizer10.Add(self.m_calcRes, 0, wx.ALL | wx.EXPAND | wx.ALIGN_CENTER_HORIZONTAL, 5)

        bSizer10.Add((0, 0), 1, wx.EXPAND, 5)

        self.m_wiz_calcResulotion.SetSizer( bSizer10 )
        self.m_wiz_calcResulotion.Layout()
        bSizer10.Fit( self.m_wiz_calcResulotion )
        self.m_wiz_putDUT = wx.adv.WizardPageSimple( self  )
        self.add_page( self.m_wiz_putDUT )

        bSizer11 = wx.BoxSizer( wx.VERTICAL )

        self.m_staticText7 = wx.StaticText( self.m_wiz_putDUT, wx.ID_ANY, u"XXXXX", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL )
        self.m_staticText7.Wrap( -1 )

        bSizer11.Add( self.m_staticText7, 0, wx.ALIGN_CENTER|wx.ALL, 5 )

        self.m_staticline5 = wx.StaticLine( self.m_wiz_putDUT, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
        bSizer11.Add( self.m_staticline5, 0, wx.EXPAND |wx.ALL, 5 )

        self.m_bitmap4 = wx.StaticBitmap( self.m_wiz_putDUT, wx.ID_ANY, wx.Bitmap( u"./ui/img/put_calib_img3.png", wx.BITMAP_TYPE_ANY ), wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer11.Add( self.m_bitmap4, 1, wx.ALIGN_CENTER|wx.ALL|wx.EXPAND, 5 )


        self.m_wiz_putDUT.SetSizer( bSizer11 )
        self.m_wiz_putDUT.Layout()
        bSizer11.Fit( self.m_wiz_putDUT )
        self.m_wiz_defineROI = wx.adv.WizardPageSimple( self  )
        self.add_page( self.m_wiz_defineROI )

        bSizer12 = wx.BoxSizer( wx.VERTICAL )

        self.m_staticText8 = wx.StaticText( self.m_wiz_defineROI, wx.ID_ANY, u"XXX", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL )
        self.m_staticText8.Wrap( -1 )

        bSizer12.Add( self.m_staticText8, 0, wx.ALIGN_CENTER|wx.ALL, 5 )

        self.m_staticline6 = wx.StaticLine( self.m_wiz_defineROI, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
        bSizer12.Add( self.m_staticline6, 0, wx.EXPAND |wx.ALL, 5 )

        bSizer13 = wx.BoxSizer( wx.HORIZONTAL )

        self.btn_plotROI = wx.Button( self.m_wiz_defineROI, wx.ID_ANY, u"XXX", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer13.Add( self.btn_plotROI, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, 5 )

        self.m_staticline7 = wx.StaticLine( self.m_wiz_defineROI, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_VERTICAL )
        bSizer13.Add( self.m_staticline7, 0, wx.EXPAND |wx.ALL, 5 )

        bSizer22 = wx.BoxSizer(wx.VERTICAL)

        self.m_bitmap_visionTemplate = wx.StaticBitmap(self.m_wiz_defineROI, wx.ID_ANY, wx.NullBitmap,
                                                       wx.DefaultPosition, wx.DefaultSize, 0)
        bSizer22.Add(self.m_bitmap_visionTemplate, 1, wx.ALL | wx.EXPAND, 5)

        self.m_staticline141 = wx.StaticLine(self.m_wiz_defineROI, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize,
                                             wx.LI_HORIZONTAL)
        bSizer22.Add(self.m_staticline141, 0, wx.EXPAND | wx.ALL, 5)

        bSizer23 = wx.BoxSizer(wx.HORIZONTAL)

        self.lbl_visionOrigin = wx.StaticText(self.m_wiz_defineROI, wx.ID_ANY, u"XXX", wx.DefaultPosition,
                                              wx.DefaultSize, 0)
        self.lbl_visionOrigin.Wrap(-1)

        bSizer23.Add(self.lbl_visionOrigin, 0, wx.ALL, 5)

        self.txt_visionOrigin = wx.TextCtrl(self.m_wiz_defineROI, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition,
                                            wx.DefaultSize, 0)
        bSizer23.Add(self.txt_visionOrigin, 1, wx.ALL, 5)

        bSizer22.Add(bSizer23, 0, wx.EXPAND, 5)

        bSizer13.Add(bSizer22, 1, wx.EXPAND, 5)

        bSizer12.Add(bSizer13, 1, wx.EXPAND, 5)

        self.m_wiz_defineROI.SetSizer( bSizer12 )
        self.m_wiz_defineROI.Layout()
        bSizer12.Fit( self.m_wiz_defineROI )
        self.m_wiz_setPickPosition = wx.adv.WizardPageSimple( self  )
        self.add_page( self.m_wiz_setPickPosition )

        bSizer141 = wx.BoxSizer( wx.VERTICAL )

        self.m_staticText91 = wx.StaticText( self.m_wiz_setPickPosition, wx.ID_ANY, u"XXX", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL )
        self.m_staticText91.Wrap( -1 )

        bSizer141.Add( self.m_staticText91, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5 )

        self.m_staticline81 = wx.StaticLine( self.m_wiz_setPickPosition, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
        bSizer141.Add( self.m_staticline81, 0, wx.EXPAND |wx.ALL, 5 )


        bSizer141.Add( ( 0, 0), 1, wx.EXPAND, 5 )

        self.m_staticText101 = wx.StaticText( self.m_wiz_setPickPosition, wx.ID_ANY, u"XXX", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.m_staticText101.Wrap( -1 )

        self.m_staticText101.SetFont( wx.Font( wx.NORMAL_FONT.GetPointSize(), wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_ITALIC, wx.FONTWEIGHT_BOLD, False, wx.EmptyString ) )

        bSizer141.Add( self.m_staticText101, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5 )


        bSizer141.Add( ( 0, 0), 1, wx.EXPAND, 5 )

        bSizer151 = wx.BoxSizer( wx.HORIZONTAL )

        self.m_staticText111 = wx.StaticText( self.m_wiz_setPickPosition, wx.ID_ANY, u"XXX", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.m_staticText111.Wrap( -1 )

        bSizer151.Add( self.m_staticText111, 0, wx.ALL, 5 )

        self.m_pickCurRobotPose = wx.TextCtrl( self.m_wiz_setPickPosition, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY )
        bSizer151.Add( self.m_pickCurRobotPose, 1, wx.ALL, 5 )


        bSizer141.Add( bSizer151, 0, wx.EXPAND, 5 )

        self.btn_SetPickCurRobotPose = wx.Button( self.m_wiz_setPickPosition, wx.ID_ANY, u"XXX", wx.DefaultPosition, wx.DefaultSize, 0 )
        bSizer141.Add( self.btn_SetPickCurRobotPose, 0, wx.EXPAND, 5 )


        bSizer141.Add( ( 0, 0), 1, wx.EXPAND, 5 )

        sbSizer31 = wx.StaticBoxSizer( wx.StaticBox( self.m_wiz_setPickPosition, wx.ID_ANY, u"xxx" ), wx.VERTICAL )

        bSizer161 = wx.BoxSizer( wx.HORIZONTAL )

        self.m_staticText121 = wx.StaticText( sbSizer31.GetStaticBox(), wx.ID_ANY, u"xxx", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.m_staticText121.Wrap( -1 )

        bSizer161.Add( self.m_staticText121, 0, wx.ALL, 5 )

        self.m_pickCurVisionPose = wx.TextCtrl( sbSizer31.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY )
        bSizer161.Add( self.m_pickCurVisionPose, 1, wx.ALL, 5 )


        sbSizer31.Add( bSizer161, 0, wx.ALIGN_CENTER|wx.EXPAND, 5 )


        sbSizer31.Add( ( 0, 0), 1, wx.EXPAND, 5 )


        bSizer141.Add( sbSizer31, 0, wx.EXPAND, 5 )


        self.m_wiz_setPickPosition.SetSizer( bSizer141 )
        self.m_wiz_setPickPosition.Layout()
        bSizer141.Fit( self.m_wiz_setPickPosition )
        self.m_wiz_save_result = wx.adv.WizardPageSimple( self  )
        self.add_page( self.m_wiz_save_result )

        bSizer24 = wx.BoxSizer( wx.VERTICAL )

        self.m_staticText21 = wx.StaticText( self.m_wiz_save_result, wx.ID_ANY, u"xxxx", wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTER_HORIZONTAL )
        self.m_staticText21.Wrap( -1 )

        bSizer24.Add( self.m_staticText21, 0, wx.ALL|wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL, 5 )

        self.m_staticline11 = wx.StaticLine( self.m_wiz_save_result, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
        bSizer24.Add( self.m_staticline11, 0, wx.EXPAND |wx.ALL, 5 )

        sbSizer6 = wx.StaticBoxSizer( wx.StaticBox( self.m_wiz_save_result, wx.ID_ANY, u"xxxx" ), wx.VERTICAL )

        bSizer25 = wx.BoxSizer( wx.HORIZONTAL )

        self.m_staticText22 = wx.StaticText( sbSizer6.GetStaticBox(), wx.ID_ANY, u"xxxx", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.m_staticText22.Wrap( -1 )

        bSizer25.Add( self.m_staticText22, 0, wx.ALL, 5 )

        self.m_final_initCurRobotPose = wx.TextCtrl( sbSizer6.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY )
        bSizer25.Add( self.m_final_initCurRobotPose, 1, wx.ALL, 5 )


        sbSizer6.Add( bSizer25, 1, wx.EXPAND, 5 )

        self.m_staticline13 = wx.StaticLine( sbSizer6.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
        sbSizer6.Add( self.m_staticline13, 0, wx.EXPAND |wx.ALL, 5 )

        bSizer26 = wx.BoxSizer( wx.HORIZONTAL )

        self.m_staticText23 = wx.StaticText( sbSizer6.GetStaticBox(), wx.ID_ANY, u"xxxx", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.m_staticText23.Wrap( -1 )

        bSizer26.Add( self.m_staticText23, 0, wx.ALL, 5 )

        self.m_final_pickCurRobotPose = wx.TextCtrl( sbSizer6.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY )
        bSizer26.Add( self.m_final_pickCurRobotPose, 1, wx.ALL, 5 )


        sbSizer6.Add( bSizer26, 1, wx.EXPAND, 5 )

        self.m_staticline12 = wx.StaticLine( sbSizer6.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
        sbSizer6.Add( self.m_staticline12, 0, wx.EXPAND |wx.ALL, 5 )

        bSizer27 = wx.BoxSizer( wx.HORIZONTAL )

        self.m_staticText24 = wx.StaticText( sbSizer6.GetStaticBox(), wx.ID_ANY, u"xxxx", wx.DefaultPosition, wx.DefaultSize, 0 )
        self.m_staticText24.Wrap( -1 )

        bSizer27.Add( self.m_staticText24, 0, wx.ALL, 5 )

        self.m_final_visionOrigin = wx.TextCtrl( sbSizer6.GetStaticBox(), wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_READONLY )
        bSizer27.Add( self.m_final_visionOrigin, 1, wx.ALL, 5 )

        sbSizer6.Add( bSizer27, 1, wx.EXPAND, 5 )

        self.m_staticline14 = wx.StaticLine( sbSizer6.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
        sbSizer6.Add( self.m_staticline14, 0, wx.EXPAND |wx.ALL, 5 )

        bSizer28 = wx.BoxSizer( wx.HORIZONTAL )

        sbSizer6.Add( bSizer28, 1, wx.EXPAND, 5 )

        bSizer24.Add( sbSizer6, 1, wx.EXPAND, 5 )


        self.m_wiz_save_result.SetSizer( bSizer24 )
        self.m_wiz_save_result.Layout()
        bSizer24.Fit( self.m_wiz_save_result )
        self.Centre( wx.BOTH )

        # Frame event
        self.Bind(wx.EVT_CLOSE, self.OnClose)
        self.Bind(wx.adv.EVT_WIZARD_CANCEL, self.OnClose)
        self.Bind(wx.adv.EVT_WIZARD_FINISHED, self.OnFinished)


    def run(self):
        # Run Wizard
        self.RunWizard(self.m_pages[0])

    def add_page(self, page):
        if self.m_pages:
            previous_page = self.m_pages[-1]
            page.SetPrev(previous_page)
            previous_page.SetNext(page)
        self.m_pages.append(page)

    def OnClose(self, event):
        self.Destroy()
        event.Skip()

    def OnFinished(self, event):
        event.Veto()
        print("I don't want to close the wizard @@")
        print("The wizard seems not to be closed because self.Destroy() not put in OnFinished() method")


    def __del__( self ):
        pass

class MyFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1)
        but = wx.Button(self, -1, "Run")
        self.Bind(wx.EVT_BUTTON, self.OnRunWizard)
        self.Bind(wx.EVT_CLOSE, self.OnClose)
        self.Show()

    def OnRunWizard(self, event):
        wz = VisionTemplateWizard(None)
        wz.run()

    def OnClose(self, event):
        self.Destroy()
        event.Skip()


if __name__ == "__main__":
    app = wx.App()
    MyFrame(None)
    app.MainLoop()

It appears that, depending on how the code is structured, you don't necessarily receive a FINISHED event.
One way around this is to check the state of the returned value from RunWizard(page1) , which will be True if the wizard's Finish button was pressed and False otherwise.

import wx
import wx.adv
from wx.adv import Wizard as wiz
from wx.adv import WizardPageSimple

########################################################################
class MyWiz(WizardPageSimple):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent, title):
        WizardPageSimple.__init__(self, parent)

        sizer = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(sizer)

        title = wx.StaticText(self, -1, title)
        title.SetFont(wx.Font(18, wx.SWISS, wx.NORMAL, wx.BOLD))
        sizer.Add(title, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
        sizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND|wx.ALL, 5)

#----------------------------------------------------------------------
class MyFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1)

        but = wx.Button(self, -1, "Run")
        self.Bind(wx.EVT_BUTTON, self.OnRunWizard)
        self.Show()

    def OnRunWizard(self, event):
        wizard = wiz(None, -1, "Wizard")
        page1 = MyWiz(wizard, "Page 1")
        page2 = MyWiz(wizard, "Page 2")
        page3 = MyWiz(wizard, "Page 3")
        page4 = MyWiz(wizard, "Page 4")

        WizardPageSimple.Chain(page1, page2)
        WizardPageSimple.Chain(page2, page3)
        WizardPageSimple.Chain(page3, page4)
        wizard.FitToPage(page1)

        self.Bind(wx.adv.EVT_WIZARD_FINISHED, self.Finished)
        state = wizard.RunWizard(page1)
        #  state will be True if the finish button was pressed
        if state:
            self.Finished(None)
        wizard.Destroy()

    def Finished(self, event=None):
        if event == None:
            print("FINISHED Not via event")
        else:
            print("FINISHED via EVENT", event)

#----------------------------------------------------------------------
if __name__ == "__main__":
    app = wx.App()
    MyFrame(None)
    app.MainLoop()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM