2015-06-09 79 views
0

在前面的问题中,我询问了关于更新弹出窗口以在按下弹出窗口中的运行按钮之后说出类似'运行'的内容的问题。问题在于,gui实际上并没有更新,直到进程完成运行之后,更新弹出窗口的时间点是毫无意义的。使用时钟对象更新Kivy GUI?

我已经尝试使用单独的线程运行我的过程,但是这引入了各种问题,并且基于我的研究,由于Kivy中的线程问题,这可能不值得追求。

我想知道的是,如果我可以使用时钟对象来计划弹出窗口以在点击“运行”按钮后更新'.1'秒,可以获得类似的效果。

这会实际上工作,还是这个时钟对象实际上不会创建,直到我的其他过程完成后再次使它无用。

我的程序在功能上很有用,但我不希望用户在不知道某个进程正在运行的情况下被卡在一个旋转轮上。我很想拥有一个进度条,但这是一个完全不同的挑战,因为我正在运行的功能是使用不指示进度的基于外部控制台的应用程序。

正如你可以从这个问题中得出的结论,我既是Kivy的新手,也是一般的GUI开发人员。任何帮助将不胜感激。

回答

2

打开弹出窗口,然后计划运行您长期任务的功能。

SomePopupClass().open() 
Clock.schedule_once(your_long_running_function, 0) 

通过安排长时间运行功能下一帧(这是0参数的效果),你给kivy的时间来运行其正常的GUI更新循环,所以你会看到弹出窗口出现在用户界面之前,被阻止。

如果您希望gui在运行时保持响应,您需要为长期任务使用线程。用kivy做这个没有什么大问题。

+0

谢谢@inclement,这听起来像我正在寻找的。我会放弃它。 –