【问题标题】:Invalid property name in a simple example简单示例中的无效属性名称
【发布时间】:2014-04-26 20:54:47
【问题描述】:

我从一本关于 Kivy 和 python 的书中复制了这段代码

ma​​in.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()
    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())
        cities = [ "{} ({})".format(d['name'], d['sys']['country']) for d in data['list'] ]
        self.search_results.item_strings = 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: []

为什么会出现以下错误?

Traceback (most recent call last):
 File "main.py", line 27, in <module>
   WeatherApp().run()
 File "C:\Kivy\kivy\kivy\app.py", line 765, in run
   self.load_kv(filename=self.kv_file)
 File "C:\Kivy\kivy\kivy\app.py", line 585, in load_kv
   root = Builder.load_file(rfilename)
 File "C:\Kivy\kivy\kivy\lang.py", line 1444, in load_file
   return self.load_string(data, **kwargs)
 File "C:\Kivy\kivy\kivy\lang.py", line 1491, in load_string
   parser = Parser(content=string, filename=fn)
 File "C:\Kivy\kivy\kivy\lang.py", line 1049, in __init__
   self.parse(content)
 File "C:\Kivy\kivy\kivy\lang.py", line 1122, in parse
   objects, remaining_lines = self.parse_level(0, lines)
 File "C:\Kivy\kivy\kivy\lang.py", line 1218, in parse_level
   level + 1, lines[i:], spaces)
 File "C:\Kivy\kivy\kivy\lang.py", line 1228, in parse_level
   'Invalid property name')
kivy.lang.ParserException: Parser: File ".\weather.kv", line 21:
...
    19:                       size_hint_x: 25
    20:       ListView:
>>   21:               id : search_results_list
    22:               item_strings: []
...
Invalid property name

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案1】:
    id : search_results_list
    

    因为id后面有空格,应该是

    id: search_results_list
    

    如果这本书在书中,我想这是一个错字。

    【讨论】:

    • 是的,这就是解决方案。一个问题:为什么它是一个错误?它与kv sintax有关,对吗?不是python语法问题吧?
    • 是的,错误只是空格是无效的语法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2021-10-07
    • 2022-08-16
    • 2016-01-14
    相关资源
    最近更新 更多