[英]Kivy KeyError when using DictProperty
我一直在嘗試調試我的自定義小部件之一,但不斷收到相同的錯誤:
KeyError: 'page_text'
這是我制作的這個測試應用程序的文件,它重新創建了這個錯誤:
蟒文件:
import kivy
from kivy.properties import StringProperty, DictProperty
from kivy.uix.label import Label
from kivy.app import App
from kivy.lang import Builder
Builder.load_file('test.kv')
class MultC(Label):
chapter = StringProperty()
page = StringProperty()
data = DictProperty()
def __init__(self, **kwargs):
super(MultC, self).__init__(**kwargs)
print(self.chapter)
print(self.page)
self.data = {"chapter_text": self.chapter, "page_text": self.page}
print(self.data)
class MainApp(App):
def build(self):
return MultC()
MainApp().run()
我的kv:
<MultC>:
chapter: "test"
page: "test2"
BoxLayout:
orientation: 'vertical'
Label:
text: root.data["chapter_text"]
Label:
text: root.data["page_text"]
如果我定義data
並給它一個有效的字典,我不明白它們 KeyError 來自哪里。
任何幫助表示贊賞,在此先感謝...
問題是在解析 .kv 時,即使字典是空的,因為它會產生錯誤。 一種可能的解決方案是使用get()
方法,但這不會實現綁定,但基於此討論,使其工作的正確語法如下:
<MultC>:
chapter: "test"
page: "test2"
BoxLayout:
orientation: 'vertical'
Label:
text: (root.data).get("chapter_text", "")
Label:
text: (root.data).get("page_text", "")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.