所以这里有一本关于Kivy的书的代码。当搜索'按下按钮调用search_location函数。在其UrlRequest中,调用了没有任何参数的found_location函数。但是found_location有两个参数,所以它怎么工作呢?请求在哪里'? Shoudn在UrlRequest中的调用看起来更像是:self.found_location(某事,某事)?
class AddLocationForm(BoxLayout):
search_input = ObjectProperty()
search_results = 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
如果您还可以解释哪些数据[' list']会很棒。当我查看search_url链接时,没有'列表'内部。
答案 0 :(得分:2)
UrlRequest(search_url, self.found_location)
这会传递UrlRequest两个参数,第二个参数是函数本身。 UrlRequest使用两个参数自动调用该函数,特别是它本身和它已检索的数据。
Shoudn在UrlRequest中的调用看起来更像:self.found_location(某事,某事)
没有。关键是你不想想要调用该函数,只是将函数本身传递给UrlRequest,以便稍后调用它。