Ven wrote in news:aa1212bb-35e5-4bf9-b8ad-7a3c083749c2 @x2g2000yql.googlegroups.com in gmane.comp.python.general:
> So, here is what I did/want: > > self.run_button=wx.Button(self.panel,ID_RUN_BUTTON,label='Install') > self.Bind(wx.EVT_BUTTON, self.OnRun,id=ID_RUN_BUTTON) > > def OnRun(self,evt): > self.run_button.SetLabel('Installing..') > #call a function that does the installation task > installation_task() > #After task completion, set the button label back to "Install" > self.run_button.SetLabel('Install') > > When I try doing this, it doesn't set the label to "Installing" while > the task is being performed. Any suggestions how do I achieve this? > http://wiki.wxpython.org/CallAfter Using this your OnRun will become somthing like: def OnRun( self, evt ): def after(): installation_task() self.run_button.SetLabel('Install') self.run_button.SetLabel('Installing..') wx.Callafter( after ) However if installation_task takes a long time you will need to use threads, something like (untested): def OnRun( self, evt ): def after(): self.run_button.SetLabel('Install') def task(): installation_task() wx.Callafter( after ) self.run_button.SetLabel('Installing..') import threading threading.Thread( target = task ).start() Rob. -- http://mail.python.org/mailman/listinfo/python-list