我如何在kivy程序中使用json api

Mohsentux

嗨,我目前正在阅读O'Reilly的《在Kivy中创建应用程序》,有一个例子我无法使其正常工作,因为到他写本书openWeatherMap时,它不需要api key(APPID),但现在却需要我是一名新手程序员,不知道如何更改代码以使其正常工作。

这是main.py源代码:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivy.network.urlrequest import UrlRequest
import json

class AddLocationForm(BoxLayout):
    search_input = ObjectProperty()

def search_location(self):
    search_template = "http://api.openweathermap.org/data/2.5" + "find?q={}&type=like"
    search_url = search_template.format(self.search_input.text)
    request = UrlRequest(search_url, self.found_location)

def found_location(self, request, data):
    data = json.loads(data.decode()) if not isinstance(data, dict) else data
    cities = ["{} ({})".format(d['name'], d['sys']['country'])
        for d in data['list']]
    self.search_results.item_strings = cities
    print("\n".join(cities))

class WeatherApp(App):
pass

if __name__ == '__main__':
WeatherApp().run()

这是weather.kv源代码:

AddLocationForm:

<AddLocationForm>:
    orientation: "vertical"
    search_input: search_box
    search_results: search_results_list
    BoxLayout:
    height: "40dp"
    size_hint_y: None
    TextInput:
        id: search_box
        size_hint_x: 50
    Button:
        text: "Search"
        size_hint_x: 25
        on_press: root.search_location()
    Button:
        text: "Current Location"
        size_hint_x: 25
ListView:
    id: search_results_list
    item_strings: []

该代码很简单,您可以在文本框中输入城市名称,然后点击搜索,然后通过显示其收到的名称来进行确认。

Parthib Biswas

好的,所以我不知道我是否迟到,但是最近买了这本书,我也发现自己完全陷入了这个问题。在搜寻此问题时,我偶然发现了您的问题以及本书的O'Reilly链接。这是作者对这个问题不得不说的:

“我已经确认了问题; openweathermap改变了他们的查询过程,书中的网址现在都坏了。这将彻底破坏所有新读者的阅读体验;我们需要进行更新,也许应该谈论第二版。”

幸运的是,一个好撒玛利亚人找到了解决这个问题的办法。但是,为此,您必须首先创建一个免费的开放天气帐户。创建帐户后,您将获得一个API密钥。它将在您的个人资料中。

因此,现在这段代码:

search_template = "http://api.openweathermap.org/data/2.5" + "find?q={}&type=like"

变成:

search_template = "http://api.openweathermap.org/data/2.5/find?q={}&type=like&APPID=" + "YOUR_API_KEY"

这对我有用。我知道我迟到了3个月,也许现在您已经找到答案了,但是我认为这对于遇到类似问题的人很有用,而Google的搜索结果会将他们带到这个地方。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何在kivy程序中使用json api

来自分类Dev

如何在我的Android应用程序中使用Facebook api登录?

来自分类Dev

如何在Grails应用程序中使用API

来自分类Dev

如何在Firefox扩展程序中使用youtube API?

来自分类Dev

如何在Flutter中使用提供程序正确获取API

来自分类Dev

我想知道如何在PHP中使用短信API

来自分类Dev

如何在批处理存储JSON API中使用rewriteToken?

来自分类Dev

如何在Android中使用地理编码API(JSON)?

来自分类Dev

如何在Azure中使用我自己的API而不是使用移动API

来自分类Dev

如何在REST API中使用会话

来自分类Dev

如何在FireMonkey中使用REST API?

来自分类Dev

如何在Dreamfactory中使用Mailgun API

来自分类Dev

如何在Python中使用linkedin API

来自分类Dev

如何在Asana API中使用JSONP

来自分类Dev

如何在Spring API中使用umlaut

来自分类Dev

如何在Android中使用Wikipedia API

来自分类Dev

如何在PHP中使用Mojang API

来自分类Dev

如何在RESTHeart API中使用limit()?

来自分类Dev

如何在FireMonkey中使用REST API?

来自分类Dev

如何在Asana API中使用JSONP

来自分类Dev

如何在Dreamfactory中使用Mailgun API

来自分类Dev

如何在Swift中使用CoreAudio API

来自分类Dev

如何在RESTHeart API中使用limit()?

来自分类Dev

如何在 soundcloud 中使用 oembed API?

来自分类Dev

如何在 MessagePack 中使用 Primitive API?

来自分类Dev

如何在我们的 Spring Boot oauth2 Web 应用程序中使用带有 google api 的组织域?

来自分类Dev

如何在iOS中使用Google访问令牌使用API访问我的YouTube频道?

来自分类Dev

如何在Android应用程序中使用Google公共API访问密钥?

来自分类Dev

如何在桌面应用程序中使用OneDrive的api并记住权限?

Related 相关文章

热门标签

归档