import wx
import wx.aui as wxaui

class MyAuiManager(wxaui.AuiManager):
    def __init__(self, managed_window):
        wxaui.AuiManager.__init__(self)
        self.SetManagedWindow(managed_window)

class MyAuiNotebook(wxaui.AuiNotebook):
    def __init__(self, parent):
        wxaui.AuiNotebook.__init__(self, parent=parent)
        self.paneInfo = wxaui.AuiPaneInfo()
        self.paneInfo.Caption('Main')
        self.paneInfo.MinimizeButton(visible=True)
        self.paneInfo.MaximizeButton(visible=True)
        self.paneInfo.PinButton(visible=True)

class MyPanel(wx.Panel):

    def __init__(self,parent):
        wx.Panel.__init__(self, parent=parent)

        self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
        self.Bind(wx.EVT_PAINT, self.OnPaint)

        self.frame = parent

    def OnEraseBackground(self, evt):
        pass # Reduce ficker with BufferedPaint

    def OnPaint(self, evt):
        dc = wx.BufferedPaintDC(self)
        dc.Clear()
        bmp = wx.Bitmap('image.png')
        dc.DrawBitmap(bmp, 0, 0)

class MainFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, size=(600,450))
        self.aui_mgr = MyAuiManager(self)
        self.nb = MyAuiNotebook(self)
        for i in range(0, 5):
            self.nb.AddPage(MyPanel(self.nb), 'page %d' % i)
        self.aui_mgr.AddPane(self.nb,
            wxaui.AuiPaneInfo().Name('NB Content').CenterPane().PaneBorder(False))
        self.aui_mgr.Update()
        self.Center()

class Main(wx.App):

    def __init__(self, redirect=False, filename=None):
        """Constructor"""
        wx.App.__init__(self, redirect, filename)
        frame = MainFrame()
        frame.Show()

if __name__ == "__main__":
    app = Main()
    app.MainLoop()
