Python 使用时钟对象更新Kivy GUI?
我在前面的一个问题中问过,在按下弹出窗口中的run按钮后,更新弹出窗口,使其显示类似“running”的内容。问题是gui直到进程完成运行后才真正更新,此时更新弹出窗口是没有意义的 我曾尝试使用一个单独的线程运行我的进程,但这会带来各种各样的问题,根据我的研究,这可能不值得追求,因为Kivy中存在线程问题 我想知道的是,在单击“运行”按钮后的“.1”秒,我是否可以使用clock对象来计划弹出窗口的更新,从而实现类似的效果 这真的会起作用吗,或者这个时钟对象在我的另一个进程完成之前不会被创建,再次使它无用 我的程序从功能的角度来看工作得很好,但我不希望用户在不知道进程正在运行的情况下被纺车缠住。我希望有一个进度条,但这是一个完全不同的挑战,因为我正在运行的函数使用的是一个基于外部控制台的应用程序,它不表示进度Python 使用时钟对象更新Kivy GUI?,python,user-interface,kivy,Python,User Interface,Kivy,我在前面的一个问题中问过,在按下弹出窗口中的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,这听起来正是我想要的。我要试一试。