强制更新Kivy中的GUI
我正在用kivy写一个应用程序,这个应用在启动时需要进行一些占用CPU的计算。我希望应用能显示它当前正在做什么,并且显示进度。然而,由于主循环还没有开始,它在计算完成之前只会显示一个空白的白屏。我能强制kivy更新界面吗?
简单来说,我想找一个kivy中类似于Tkinter的root.update()
的功能。
我可以通过定义一系列函数来解决这个问题,每个函数通过Clock.schedule_once(nextFunction, 1)
调用下一个函数,但这样做会显得很麻烦。
提前谢谢你。
1 个回答
1
先不讨论你是否应该使用线程或者其他方法(可能你应该考虑这些),简单来说,你应该把计算放到别的地方去做。开始的时候先显示一些简单的东西(比如在你的构建方法中返回一个简单的组件),然后再进行计算,比如通过时钟调度来处理。
在这种情况下,你的计算还是会阻塞界面。你可以通过在一个线程中进行计算来解决这个问题,或者把计算手动拆分成小块,按顺序调度执行。
手动调用类似于 Clock.tick()
的方法来更新界面可能是可行的,但我不确定这样做是否能正常工作,即使能,也不能在图形初始化之前显示图形。