使用kivy进行多线程处理

时间:2017-07-04 02:14:43

标签: python multithreading kivy

我正在使用kivy库在python中编写此代码,用于我在其中执行一些URL请求的UI。 我现在没有与我分享代码,但我会尝试解释它。 基本上,用户在文本框中键入并单击一个按钮,该按钮将返回一个名称列表,这些名称将出现在屏幕上(所有这些都发生在弹出窗口内)。 问题是,我想在等待请求时显示带有加载消息的旋转球。我在不同的脚本中拥有所有URL功能。 我需要做的是打开第二个弹出窗口,为URL请求启动一个新线程,让主线程正常运行,以便动画显示正确。然后,请求完成后,关闭此弹出窗口并显示所需的结果。 有谁知道如何从应用程序外部调用kivys函数和/或如何知道线程何时完成? 我迷失在这里。任何类似的东西的任何指导或示例将不胜感激。 提前谢谢!

1 个答案:

答案 0 :(得分:1)

只要你不需要更新GUI(你没有),kivy中的多线程就非常简单。你必须记住一件事 - GUI在主线程上运行,你不应该阻止它。只要您的操作在另一个线程上运行就可以了。

在我的应用中实现加载屏幕时,我使用了this示例。

现在,困难的部分是知道何时关闭弹出窗口。当你调用你的URL函数时,你可以传递一个像close_popup_load_data这样的回调函数,你可以创建两个线程 - 一个将完成工作,另一个将检查工作是否完成(你可以检查线程是否存活)第二个将关闭弹出窗口并加载数据。有很多方法可以做到这一点。

首先尝试制作一些简单的东西,看看它是否有效。