wxpython中EVT_按钮上的按钮标签更改?

wxpython中EVT_按钮上的按钮标签更改?,python,button,wxpython,label,Python,Button,Wxpython,Label,继续之前,请先查看一些系统信息: 平台:Mac OS X 10.7.1 Python版本:ActiveState Python 2.7.1 wxPython版本:wxPython2.9-osx-cocoa-py2.7 我希望在执行任务时更改按钮标签 因此,以下是我所做/想要的: self.run_button=wx.Button(self.panel,ID_RUN_BUTTON,label='Install') self.Bind(wx.EVT_BUTTON, self.OnRun,id=ID_

继续之前,请先查看一些系统信息:

平台:Mac OS X 10.7.1

Python版本:ActiveState Python 2.7.1

wxPython版本:wxPython2.9-osx-cocoa-py2.7

我希望在执行任务时更改按钮标签

因此,以下是我所做/想要的:

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')[/code]

当我尝试这样做时,它不会在执行任务时将标签设置为“安装”。有什么建议吗?

由于您正在GUI线程上运行逻辑(installation\u task()),因此该按钮永远没有机会用新标签重新绘制自身

您需要在后台线程上运行installation\u task(),这样就不会锁定GUI。

您正在运行的“installation\u task”函数正在阻塞GUI的主循环。您需要使用线程更新标签,这意味着您需要学习wxPython的线程安全方法。见以下文章:或