我有一个使用有限元方法进行计算的程序,可能需要花费几分钟时间。 由于该程序对于用户来说可能已冻结,因此我计算了它预先计算的迭代次数,并将百分比进度打印到TKinter中的文本小部件。TKinter:文本小部件在程序运行时不更新
问题是当程序迭代时主窗口冻结,并且只在最后更新文本,这对用户知道当前计算进度没有多大用处。
下面的代码的特定部分:
progr+=dcompl
textbox.configure(state=NORMAL)
textbox.delete(1.0,2.0)
textbox.insert(1.0,"Processando... ")
textbox.insert(2.0,str(int(progr))+"%") #the variable progr is the current progress in %
textbox.configure(state=DISABLED)
它的“程序控制”变量每次通过代码的特定部分时间更新。
如果我只是将“progr”变量打印到控制台,它工作得很好,但我希望用户在查看UI而不是在控制台。
有没有什么办法可以让TKinter窗口不冻结并在程序运行时更新文本?
您从不想在GUI的主线程中调用'sleep',因为它会在整个GUI处于休眠状态时冻结整个GUI。 – 2014-11-03 23:18:29
谢谢。我使用线程模块来创建一个不同的线程,这解决了我的问题。 – 2014-11-04 20:02:47