#Boa:Frame:Frame1

import wx

def create(parent):
    return Frame1(parent)

[wxID_FRAME1, wxID_FRAME1BUTTON1, wxID_FRAME1PANEL1, wxID_FRAME1PANEL2, 
 wxID_FRAME1STATICTEXT1, 
] = [wx.NewId() for _init_ctrls in range(5)]

class Frame1(wx.Frame):
    def _init_coll_boxSizer1_Items(self, parent):
        # generated method, don't edit

        parent.AddWindow(self.panel2, 0, border=0, flag=0)
        parent.AddWindow(self.button1, 0, border=0, flag=0)

    def _init_coll_boxSizer2_Items(self, parent):
        # generated method, don't edit

        parent.AddWindow(self.staticText1, 0, border=0, flag=0)

    def _init_sizers(self):
        # generated method, don't edit
        self.boxSizer1 = wx.BoxSizer(orient=wx.VERTICAL)

        self.boxSizer2 = wx.BoxSizer(orient=wx.VERTICAL)

        self._init_coll_boxSizer1_Items(self.boxSizer1)
        self._init_coll_boxSizer2_Items(self.boxSizer2)

        self.panel1.SetSizer(self.boxSizer1)
        self.panel2.SetSizer(self.boxSizer2)

    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_FRAME1, name='', parent=prnt,
              pos=wx.Point(228, 135), size=wx.Size(372, 153),
              style=wx.DEFAULT_FRAME_STYLE, title='Frame1')
        self.SetClientSize(wx.Size(364, 119))

        self.panel1 = wx.Panel(id=wxID_FRAME1PANEL1, name='panel1', parent=self,
              pos=wx.Point(0, 0), size=wx.Size(364, 119),
              style=wx.TAB_TRAVERSAL)
        self.panel1.SetBackgroundColour(wx.Colour(0, 128, 255))

        self.panel2 = wx.Panel(id=wxID_FRAME1PANEL2, name='panel2',
              parent=self.panel1, pos=wx.Point(0, 0), size=wx.Size(64, 13),
              style=wx.TAB_TRAVERSAL)
        self.panel2.SetBackgroundColour(wx.Colour(255, 255, 0))

        self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
              label='staticText1', name='staticText1', parent=self.panel2,
              pos=wx.Point(0, 0), size=wx.Size(64, 13), style=0)

        self.button1 = wx.Button(id=wxID_FRAME1BUTTON1, label=u'New text',
              name='button1', parent=self.panel1, pos=wx.Point(0, 13),
              size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnSupplyNewTextButton,
              id=wxID_FRAME1BUTTON1)

        self._init_sizers()

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.panel1.Layout()

    def OnSupplyNewTextButton(self, event):
        dlg = wx.TextEntryDialog(self, 'Enter the text string you want.', '', 
          'Default answer')
        try:
            if dlg.ShowModal() == wx.ID_OK:
                result = dlg.GetValue()
                # Your code
        finally:
            dlg.Destroy()
        self.ChangeText(result)
        
        
    def ChangeText(self,label):
        window = self.staticText1
        f = window.GetFont()
        dc = wx.WindowDC(window)
        dc.SetFont(f)
        width,height = dc.GetTextExtent(label)
        
        length = len(label)*5.7
        self.staticText1.SetLabel(label)
        self.panel2.SetSize(wx.Size(width,height))
        self.staticText1.SetSize(wx.Size(width,height))

        self.panel2.Update()

if __name__ == '__main__':
    app = wx.PySimpleApp()
    frame = create(None)
    frame.Show()

    app.MainLoop()
