Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用时钟对象更新Kivy GUI?_Python_User Interface_Kivy - Fatal编程技术网

Python 使用时钟对象更新Kivy GUI?

Python 使用时钟对象更新Kivy GUI?,python,user-interface,kivy,Python,User Interface,Kivy,我在前面的一个问题中问过,在按下弹出窗口中的run按钮后,更新弹出窗口,使其显示类似“running”的内容。问题是gui直到进程完成运行后才真正更新,此时更新弹出窗口是没有意义的 我曾尝试使用一个单独的线程运行我的进程,但这会带来各种各样的问题,根据我的研究,这可能不值得追求,因为Kivy中存在线程问题 我想知道的是,在单击“运行”按钮后的“.1”秒,我是否可以使用clock对象来计划弹出窗口的更新,从而实现类似的效果 这真的会起作用吗,或者这个时钟对象在我的另一个进程完成之前不会被创建,再次

我在前面的一个问题中问过,在按下弹出窗口中的run按钮后,更新弹出窗口,使其显示类似“running”的内容。问题是gui直到进程完成运行后才真正更新,此时更新弹出窗口是没有意义的

我曾尝试使用一个单独的线程运行我的进程,但这会带来各种各样的问题,根据我的研究,这可能不值得追求,因为Kivy中存在线程问题

我想知道的是,在单击“运行”按钮后的“.1”秒,我是否可以使用clock对象来计划弹出窗口的更新,从而实现类似的效果

这真的会起作用吗,或者这个时钟对象在我的另一个进程完成之前不会被创建,再次使它无用

我的程序从功能的角度来看工作得很好,但我不希望用户在不知道进程正在运行的情况下被纺车缠住。我希望有一个进度条,但这是一个完全不同的挑战,因为我正在运行的函数使用的是一个基于外部控制台的应用程序,它不表示进度


从这个问题可以看出,我对Kivy和GUI开发都是新手。任何帮助都将不胜感激。

打开弹出窗口,然后安排运行长任务的功能

SomePopupClass().open()
Clock.schedule_once(your_long_running_function, 0)
通过为下一帧安排长时间运行的函数(这是0参数的效果),您可以给kivy时间运行其正常的gui更新循环,以便在阻止ui之前看到弹出窗口


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

谢谢@Sarment,这听起来正是我想要的。我要试一试。