2017-12-29 69 views
0

私はStringProperty()にバインドされたkivyラベルを持っています。私はPythonでその文字列を取得しようとしています。PythonのStringPropertyから文字列を取り出す方法

class Screen1(Screen): 
    food_label = StringProperty() 

    def print_label(self): 
     print(Screen1.food_label) 

それは、この返されます。私はdefでこの文を使用して前の画面のプロパティを設定し <StringProperty name=food_label>

を:

self.manager.get_screen('screen_1').food_label = food 

'食品' はStringあるところ。画面上にラベルテキストが正しく表示されます。

StringProperty()に含まれる実際の文字列を印刷するにはどうすればよいですか。

+0

@kindallを行う必要がある場合) '。私はそれに追加する必要がある引数が不明...この部分は、ドキュメントに記載されていません。 – twegner

+1

ああ、申し訳ありませんが、その呼び出しは 'self.manager.get_screen( 'screen_1')のようなインスタンス上にある必要があります。food_label.get()' – kindall

+0

@kindallそうです。 TY。 – twegner

答えて

2

Screen1.food_labelは機能しません。 KivyプロパティはPythonの静的変数のように見えますが、クラスの先頭で宣言されていますが、実際にはオブジェクトプロパティです。あなたは

class Screen1(Screen): 
    food_label = 'Hello world' 

    def print_label(self): 
     print(Screen1.food_label) 

これは
を動作するはずやっただろう。しかし、これらはKivyプロパティなので、私は `取得()が(0が与えられた正確に一つの引数を取るのエラーを取得

class Screen1(Screen): 
    food_label = StringProperty() 

    def print_label(self): 
     print(self.food_label) 
+1

これは正解です。 – twegner

関連する問題