Some system info before proceeding further:
Platform: Mac OS X 10.7.1
Python Version: ActiveState Python 2.7.1
wxPython Version: <a=http://downloads.sourceforge.net/wxpython/wxPython2.9-osx-2.9.2.1- cocoa-py2.7.dmg>wxPython2.9-osx-cocoa-py2.7
I want the button label to be changed while performing a task
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?
The button never gets a chance to redraw itself with the new label because you're running your logic (installation_task()) on the GUI thread.
You need to run installation_task() on a background thread so you don't lock up the GUI.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With