2016-07-01 59 views
0

我正在從kivy中的url請求JSON。在主應用程序:在kivy python如何從url請求中獲取數據

data = UrlRequest('http://myhost.ninja/request', gotArticles, onFailure) 

和回調:

def gotArticles(req, results): 
    for key in results: 
    return key 

當我再print(data)我得到<UrlRequest(Thread-1, started daemon 123145307557888)>打印。我可以從回調中打印數據,但是如何將數據返回給應用程序的其餘部分?

回答

0

我覺得很明顯你並不試圖打印一個函數的返回值(如print(int('1'))),而是將你指定給data變量的整個UrlRequest類打印出來。相同print(TextInput())

嘗試從該對象打印變量:

print(data.result) 

這基本上是UrlRequest.result

例子:http僅用於顯示的結果是目前真正的網頁有https

req = UrlRequest('http://kivy.org') 
while not req.is_finished: 
    sleep(1)       # seems to be unnecessary in this case 
    Clock.tick() 

print('result =', req.result) 
print('error =', req.error) 

wait()視覺上做同樣的事情

req = UrlRequest('http://kivy.org') 
req.wait() 
print('result =', req.result) 
print('error =', req.error) 
+0

我看到了我m打印對象,但我不知道'''中有哪些變量可用,'.results'不是 – icicleking

+1

所有列出的,但你需要看看t在文件末尾的[示例](https://kivy.org/docs/_modules/kivy/network/urlrequest.html)。它說你需要等待(檢查'data.is_finished'是否爲'True'),然後它會返回一些值。所有用作kwargs的函數都在請求完成後執行。 – KeyWeeUsr

+0

我在'UrlRequst'上調用'.wait()'方法。其中的影響是在我的打印語句中打印爲'none'。我相信這個鏈接是UrIequest方法的源代碼,而不是一個例子。 – icicleking