我在之前的一个问题中询问过如何更新弹出窗口,例如“运行”等问题。按下弹出窗口中的运行按钮后。问题是gui在进程运行完毕之后才真正更新,此时更新弹出窗口毫无意义。
我尝试使用单独的线程运行我的流程,但这引入了各种各样的问题,并且基于我的研究,由于Kivy中的线程问题,这可能不值得追求。
我想知道的是,如果我可以使用时钟对象来安排弹出窗口更新' .1' “跑步”后几秒钟按钮已被点击。
这实际上是否有效,或者在我的其他过程完成之后,实际上不会创建此时钟对象,再次使它无用。
我的程序在功能预期方面效果很好,但我不希望用户在不知道进程正在运行的情况下停留在旋转轮上。我希望有一个进度条,但这是一个完全不同的挑战,因为我正在运行的函数使用的是基于外部控制台的应用程序,并不表示进度。
正如您可以从这个问题中看出的那样,我既是Kivy的新手,也是一般的GUI开发人员。任何帮助将不胜感激。
答案 0 :(得分:2)
打开弹出窗口,然后安排运行长任务的函数。
SomePopupClass().open()
Clock.schedule_once(your_long_running_function, 0)
通过为下一帧调度长时间运行的函数(这是0参数的效果),你可以给kivy时间运行它的正常gui更新循环,这样你就会看到弹出窗口在ui被阻止之前出现。 / p>
如果你希望gui在运行时保持响应,你需要使用一个线程来执行长任务。用kivy做这件事没有什么大问题。