# -*- coding: utf-8 -*-#
import wx

class Example(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, title='Size', size=wx.DefaultSize)
        self.Bind(wx.EVT_CLOSE, self.OnClose)
        fSizer = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(fSizer)

        self.init_ui()
        self.Show()

        self.Fit()

        
    def init_ui(self):
        panel = wx.Panel(self)
        self.GetSizer().Add(panel, 1, wx.EXPAND)
        #
        # Controls
        #
        header_text = wx.StaticText(panel)
        header_text.SetLabelMarkup('<b>Header</b>')
        first_text = wx.StaticText(panel, label='first')
        second_text = wx.StaticText(panel, label='second')
        third_text = wx.StaticText(panel, label='third')
        first_button = wx.Button(panel, label='First', size=(70, 30))
        second_button = wx.Button(panel, label='Second', size=(70, 30))
        third_button = wx.Button(panel, label='Third', size=(70, 30))
        #
        # Sizer for buttons
        #
        button_box = wx.BoxSizer(wx.HORIZONTAL)
        button_box.Add(first_button, flag=wx.RIGHT, border=5)
        button_box.Add(second_button)
        button_box.Add(third_button, flag=wx.LEFT, border=5)
        #
        # Grid bag sizer
        #
        grid_sizer = wx.GridBagSizer(7, 30)
        grid_sizer.Add(header_text, pos=(0,0), flag=wx.EXPAND)
        grid_sizer.Add(first_text, pos=(0,1), flag=wx.EXPAND)
        grid_sizer.Add(second_text, pos=(1,1), flag=wx.EXPAND)
        grid_sizer.Add(third_text, pos=(2,1), flag=wx.EXPAND)
        grid_sizer.Add(button_box, pos=(3,1))
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(grid_sizer, proportion=1, flag=wx.EXPAND|wx.ALL, border=5)
        panel.SetSizer(sizer)
        
        #
        # UI events
        #
        self.Bind(wx.EVT_BUTTON, self.OnPass, id=first_button.GetId())
        self.Bind(wx.EVT_BUTTON, self.OnPass, id=second_button.GetId())
        self.Bind(wx.EVT_BUTTON, self.OnPass, id=third_button.GetId())
    def OnPass(self, event):
        pass
    def OnClose(self, event):
        self.Destroy()

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