2016-06-17 18 views
0

私はいくつかのKivyウィジェットの値を設定するために使用した文字列を持っているとします。どのように私はすべてのウィジェットをその文字列の変更に反応させることができますか?
私はその文字列を各ウィジェットのプロパティにすることができますが、1つのウィジェットのプロパティを変更すると、同じプロパティを持つ他のウィジェットはそれに応じて変更されません。複数の場所で文字列値を変更するにはどうすればよいですか?

私が欲しいの動作は、リストの参照のようなものです:

st = ["1"] 
st1 = st 
st.append("2") 
print(st1, st) # output: ['1', '2'] ['1', '2'] 

あなたが見ることができるように、私はリストstを変更すると、リストst1も変化します。これは、st1がリストへの参照であるからです。この動作を文字列に適用するにはどうすればよいですか? Pythonの標準ライブラリには、ここで私は

を望むものを達成するための方法を持っていない場合はおそらくKivyでデモ、Kivyをされて使用して:

from kivy.app import App 
from kivy.uix.label import Label 
from kivy.uix.button import Button 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.textinput import TextInput 

class TestApp(App): 
    def change_text(self, bt): 
     self.string += "!" 
     print(self.string) 

    def build(self): 
     self.string = "Hello" 
     lb = Label(text = self.string) 
     bt = Button(on_press = self.change_text) 
     tx = TextInput(text = self.string) 
     bl = BoxLayout() 
     bl.add_widget(lb) 
     bl.add_widget(tx) 
     bl.add_widget(bt) 
     return bl 

TestApp().run() 

ボタンが押されますので、アプリケーションの属性string変更は、 (LabelTextInput

答えて

0

kivyでは、プロパティを使用できます(完全な別のものであるpythonプロパティと混同しないでください)。

MainWidget: 
    id: "main" 
    mystring: "asdf" 

    widget1: 
     content: main.mystring 
    widget2: 
     content: main.mystring 
    ... 

propertiesためkivyドキュメントの続きを読む:KV言語では、次の操作を行うことができるはずです。

関連する問題