2016-12-13 13 views
1

基本ウィジェットの初期化の前に、Kivy言語でカスタムセットStringPropertyを使用するにはどうすればよいですか?
MyInputクラスが初期化されると、keyプロパティはまだ設定されていないため、その後の手順でKeyError例外が発生するという問題があります。Python/Kivy:ウィジェットの初期化時のアクセスプロパティ

このようなサブクラスを設計することは可能でしょうか、それとも良い方法がありますか?

MainWidget: 
    details: some_dictionary[] 
    MyInput: 
     key: 'firstkey' 
    MyInput: 
     key: 'secondkey' 


<[email protected]>: 
    key: '' 
    text: self.parent.details[self.key] 

両方のポイントは、言わずに明確にするものでなければなら:
- 私は3日、
ためKivyに取り組んできました - 削除されたkey性質に応じて、他の特性の全体の多くがあります私の質問のより良い説明のために。

Kivy 1.9.1 - Pythonの3.4.2

答えて

0

あなたはあなたの問題を克服するために、デフォルト値を使用することができます。ここに実例があります。

class TestApp(App): 
    def build(self): 


     Builder.load_string("""\ 
<MyBox>: 
    details: {'firstkey': 'pop', 'secondkey': 'corn'} 
    MyInput: 
     key: 'firstkey' 
    MyInput: 
     key: 'secondkey' 


<[email protected]>: 
    key: '' 
    text: self.parent.details.get(self.key, '') 
""") 
     return MyBox() 

if __name__ == '__main__': 
    TestApp().run() 
+0

面白いアプローチです。私はこれを解決するために別の方法で作業していました。基本的に 'on_key'プロパティを使ってテキストを更新しています。 – nxet

+0

プロパティのバインドを解除し、値の変更を伝播するために追加のウォッチャーを設定する必要があるため、提案が実際に問題を解決しないことが判明しました。 – nxet

関連する問題