import wx

class LeftPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent=parent)        
        self.vbox = wx.BoxSizer(wx.VERTICAL)
        self.hbox = wx.BoxSizer(wx.HORIZONTAL)        
        self.LeftText = wx.TextCtrl(self,
                                     style=wx.TE_MULTILINE|wx.TE_RICH|wx.BORDER_SIMPLE)
        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(self.LeftText)
        self.vbox.Add(hsizer,1, wx.EXPAND)
        self.SetSizer(self.vbox)
        self.LeftText.SetValue("LeftPanel")

class SWPanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent=parent)        
        self.vbox = wx.BoxSizer(wx.VERTICAL)
        self.hbox = wx.BoxSizer(wx.HORIZONTAL)
        
        self.LeftText = wx.TextCtrl(self,
                                     style=wx.TE_MULTILINE|wx.TE_RICH|wx.BORDER_SIMPLE)
        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(self.LeftText)
        self.vbox.Add(hsizer,1, wx.EXPAND)
        self.SetSizer(self.vbox)
        self.LeftText.SetValue("SWPanel")

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

        self.vbox = wx.BoxSizer(wx.VERTICAL)
        self.hbox = wx.BoxSizer(wx.HORIZONTAL)
        
        self.LeftText = wx.TextCtrl(self,
                                     style=wx.TE_MULTILINE|wx.TE_RICH|wx.BORDER_SIMPLE)
        hsizer = wx.BoxSizer(wx.HORIZONTAL)
        hsizer.Add(self.LeftText,wx.EXPAND)
        self.vbox.Add(hsizer,wx.EXPAND)
        self.SetSizer(self.vbox)
        self.LeftText.SetValue("RightPanel")
    
class MyForm(wx.Frame):
 
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, "Splitter Tutorial")
        hsplitter = wx.SplitterWindow(self)       
        
        leftP = LeftPanel(hsplitter)
        leftSW = SWPanel(hsplitter)        
        LeftSide = (hsplitter.SplitHorizontally(leftP, leftSW))
        hsplitter.SetSashGravity(0.5)

        vsplitter = wx.SplitterWindow(self)
        
        leftP = LeftPanel(vsplitter)
        rightP = RightPanel(vsplitter)
        vsplitter.SplitVertically(leftP, rightP)
        vsplitter.SetMinimumPaneSize(20)     


        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(hsplitter, 1, wx.EXPAND)
        sizer.Add(vsplitter, 1, wx.EXPAND)
        
        self.SetSizer(sizer) 

if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm()
    frame.Show()
    app.MainLoop()
