2017-07-04 31 views
-1

我正在寫這個代碼在python中使用kivy圖書館爲我做一些URL請求的用戶界面。 我現在沒有與我分享的代碼,但我會盡力解釋它。 基本上,用戶在文本框中鍵入並單擊一個按鈕,該按鈕將返回一個名稱列表,並且這些名稱出現在屏幕中(所有這些都發生在彈出窗口內)。 問題是,我想在等待請求時顯示帶有加載消息的旋轉球。我有不同的腳本中的所有URL函數。 我需要做的是打開第二個彈出窗口,爲URL請求啓動一個新線程,並讓主線程正常運行,以便動畫正確顯示。然後,請求完成後,關閉此彈出窗口並顯示所需的結果。 有誰知道如何從應用程序外部調用kivys函數和/或如何知道線程何時完成? 我迷路了。任何類似的指導或例子將不勝感激。 在此先感謝!多線程與基維爾

回答

0

只要您不需要更新GUI(您不需要),kivy中的多線程就非常簡單。你必須記住一件事 - GUI在主線程上運行,你不應該阻止它。只要你的操作在另一個線程上運行,它就沒問題。

我使用this的例子,當我的應用程序中實現加載屏幕。

現在,困難的部分是知道何時關閉彈出窗口。當你調用你的URL函數時,你可以傳遞一個回調函數,如close_popup_load_data,你可以創建兩個線程 - 一個將執行工作,另一個將檢查工作是否完成(可以檢查一個線程是否還活着),第二個將關閉您的彈出窗口並加載數據。有很多方法可以做到這一點。

嘗試先做一些簡單的事情,看看它是否有效。

+0

嗨,已經有一段時間了,因爲我不得不擱置這部分。我第一次沒有聽到你說的話,但現在我想我是這麼做的。 無論如何,我通過發送彈出對象到線程並從那裏關閉它來解決它。我還將調用類發送到線程以獲取結果。 **我知道這不是它想要完成的方式**,而是出於原型設計的目的。 做完之後,我想我會收到您的建議,然後我會盡力實施。謝謝 – bleand