import wx

class AddingPanel(wx.Panel):
    def __init__(self,number,*args,**kwargs):
        wx.Panel.__init__(self,*args,**kwargs)
        sizer= wx.BoxSizer(wx.VERTICAL)
        sizer.AddStretchSpacer()
        num= wx.StaticText(self,label=str(number),style=wx.ALIGN_CENTRE)
        font= num.GetFont()
        font.SetPointSize(70)
        num.SetFont(font)
        sizer.Add(num,0,wx.ALIGN_CENTRE)
        sizer.AddStretchSpacer()
        self.SetSizer(sizer)

class MainFrame(wx.Frame):
    def __init__(self,*args,**kwargs):
        wx.Frame.__init__(self,*args,**kwargs)
        self.panel= wx.Panel(self)
        sizer= wx.BoxSizer(wx.VERTICAL)
        menu_sizer= wx.BoxSizer(wx.HORIZONTAL)
        self.counter=1
        self.combo_selector= wx.ComboBox(self.panel,value="0",choices=["0"],style=wx.CB_READONLY)
        menu_sizer.Add(self.combo_selector,3,wx.ALL,5)
        self.add= wx.Button(self.panel,label="Add")
        menu_sizer.Add(self.add,1,wx.ALL^wx.LEFT,5)
        self.show= wx.Button(self.panel,label="Show")
        menu_sizer.Add(self.show,1,wx.ALL^wx.LEFT,5)
        self.remove= wx.Button(self.panel,label="Remove")
        menu_sizer.Add(self.remove,1,wx.ALL^wx.LEFT,5)
        sizer.Add(menu_sizer,0,wx.EXPAND)
        self.panel_sizer= wx.BoxSizer(wx.HORIZONTAL)
        panel= AddingPanel(0,self.panel)
        self.choices= {0:panel}
        self.panel_sizer.Add(panel,1,wx.EXPAND)
        sizer.Add(self.panel_sizer,1,wx.EXPAND)
        self.panel.SetSizer(sizer)

        self.add.Bind(wx.EVT_BUTTON,self.addPanel)
        self.show.Bind(wx.EVT_BUTTON,self.showPanel)
        self.remove.Bind(wx.EVT_BUTTON,self.removePanel)

        self.Show()

    def addPanel(self,event):
        panel= AddingPanel(self.counter,self.panel)
        self.choices[self.counter]= panel
        self.counter+=1
        self.combo_selector.SetItems(map(str,self.choices.keys()))
        self.panel_sizer.Add(panel,1,wx.EXPAND)
        self.Layout()

    def showPanel(self,event):
        key= self.combo_selector.GetValue()
        # detecting if nothing is selected
        if key == u'':
            event.Skip()
            return
        panel_key= int(key)
        for key,val in self.choices.iteritems():
            val.Show(key==panel_key)
        self.panel_sizer.Layout()

    def removePanel(self,event):
        panel_key= self.combo_selector.GetValue()
        # -----------------------
        # if nothing is selected
        if panel_key == u'':
            event.Skip()
            return
        #------------------
        rm_panel= self.choices[int(panel_key)]
        rm_panel.Destroy()
        del self.choices[int(panel_key)]
        self.combo_selector.SetItems(map(str,self.choices.keys()))

if __name__ == "__main__":
    app= wx.App(False)
    MainFrame(None,size=(500,600))
    app.MainLoop() # correction there were app.MainL