调用app.MainLoop()后更新wxPython进度条

时间:2011-08-04 14:34:23

标签: python multithreading wxpython

我有一个执行计算的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())?

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

您应该在后台线程中运行逻辑并使用{​​{1}}定期更新GUI。 wx.CallAfter将在GUI线程上调用提供的函数,因此可以安全地进行GUI调用。

CallAfter