wxPython dynamically add pages to wizard
<p>I have been working on developing a wxPython based wizard which I would like to be capable of dynamically increasing in size based on input provided within the wizard itself.  This wizard progresses through a series of pages and then prompts the user to enter a number.  The goal is to get the wizard to then increase by the number input at the txtCtrl box.  I am having difficulty accessing the pageList list within the wizard class responsible for managing the top level aspects of the wizard.  With the following code : </p>

<pre><code>import wx
import wx.wizard as wiz

########################################################################


#----------------------------------------------------------------------
# Wizard Object which contains the list of wizard pages.
class DynaWiz(object):
    def __init__(self):
        wizard = wx.wizard.Wizard(None, -1, "Simple Wizard")
        self.pageList = [TitledPage(wizard, "Page 1"),
                    TitledPage(wizard, "Page 2"),
                    TitledPage(wizard, "Page 3"),
                    TitledPage(wizard, "Page 4"),
                    AddPage(wizard)]
        for i in range(len(self.pageList)-1):
            wx.wizard.WizardPageSimple.Chain(self.pageList[i],self.pageList[i+1])

        wizard.FitToPage(self.pageList[0])

        wizard.RunWizard(self.pageList[0])

        wizard.Destroy()

#----------------------------------------------------------------------
#generic wizard pages
class TitledPage(wiz.WizardPageSimple):
    def __init__(self, parent, title):
        """Constructor"""
        wiz.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)

#----------------------------------------------------------------------
# page used to identify number of pages to add
class AddPage(wiz.WizardPageSimple):
    def __init__(self,parent):
        self.parent = parent
        """Constructor"""
        wiz.WizardPageSimple.__init__(self, parent)


        sizer = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(sizer)
        self.numPageAdd = wx.TextCtrl(self, -1, "")
        self.verifyButton = wx.Button(self, id=wx.ID_ANY, label = "Confirm",name = "confirm")
        self.verifyButton.Bind(wx.EVT_BUTTON, self.append_pages)

        sizer.Add(self.numPageAdd, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
        sizer.Add(self.verifyButton,0,wx.ALIGN_CENTER|wx.ALL, 5)
        sizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND|wx.ALL, 5)

    #function used to add pages to pageList inside of Wizard Object containing
    # this page
    def append_pages(self,event):
        n = int(self.numPageAdd.GetValue())
        for i in range(n):
            #Add n number of pages to wizard list "pageList" here....
            self.parent.pageList.append(TitledPage(wizard, "Added Page"))

#----------------------------------------------------------------------

if __name__ == "__main__":
    app = wx.App(False)
    dWiz = DynaWiz()
    app.MainLoop()
</code></pre>

<p>Using this code generated the following error message:</p>

<blockquote>
  <p>AttributeError: 'Wizard' object has no attribute 'pageList'</p>
</blockquote>

<p>And I understand why that is, because ultimately the parent of the page is the Wizard object and not the DynaWiz object.  That being said, is there a way to access the pageList list in the DynaWiz obect AND ensure that the current wizard gets reloaded from within the event in the AddPage class?</p>