2017-07-04 70 views
-1

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

回答

0

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

我使用this的例子,当我的应用程序中实现加载屏幕。

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

尝试先做一些简单的事情,看看它是否有效。

+0

嗨,已经有一段时间了,因为我不得不搁置这部分。我第一次没有听到你说的话,但现在我想我是这么做的。 无论如何,我通过发送弹出对象到线程并从那里关闭它来解决它。我还将调用类发送到线程以获取结果。 **我知道这不是它想要完成的方式**,而是出于原型设计的目的。 做完之后,我想我会收到您的建议,然后我会尽力实施。谢谢 – bleand