簡體   English   中英

使用 DictProperty 時出現 Kivy KeyError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM