我有一个执行计算的python脚本,我已经为弹出的wxPython进度条创建了一个类。目前我有:
app=wx.App()
progress = ProgressBar()
app.MainLoop()
for i in xrange(len(toBeAnalysed)):
analyse(toBeAnalysed[i])
progress.update(i/len(toBeAnalysed)*100)
现在,这个例子由于显而易见的原因不起作用。有没有什么方法可以在不同的线程中运行app.MainLoop()但是在计算完成后仍然会传达进度(和.update())?
感谢您的帮助。
答案 0 :(得分:4)
您应该在后台线程中运行逻辑并使用{{1}}定期更新GUI。 wx.CallAfter
将在GUI线程上调用提供的函数,因此可以安全地进行GUI调用。
CallAfter