我正在kivy编写一个应用程序,它在发布时会执行cpu-heavy计算。我希望应用程序显示它当前正在进行的操作以及进度,但是,由于尚未到达主循环,它只显示空白屏幕,直到它完成工作。我可以强制kivy更新界面吗?
基本上我正在寻找kivy相当于Tkinter的root.update()
我可以通过定义一系列函数来创建一个变通方法,每个函数通过Clock.schedule_once(nextFunction, 1)
调用下一个函数,但这样会非常草率。
提前致谢。
答案 0 :(得分:1)
不考虑是否应该使用线程或其他东西(可能你应该使用),答案就是你应该将你的cpu计算移动到其他地方。最初显示一些简单的东西(即从构建方法返回一个简单的小部件),然后在此之后进行计算,例如通过时钟计划它们。
在这种情况下,你的计算仍将阻止gui。您可以通过在线程中执行此操作或通过手动将它们分成可以按顺序排列的小块来解决此问题。
有可能通过手动调用类似Clock.tick()
之类的内容来更新gui,但我不确定这是否正常,即使这样也无法在显示之前显示图形已初步化。