簡述
ListProperty類專門存放串列,預設值為[](空串列)。
基本範例
在main.py中寫上此段程式碼:
from kivy.app import App from kivy.uix.gridlayout import GridLayout from kivy.properties import ListProperty class MyLayout(GridLayout) : a1 = ListProperty(['hello',1,{'age':24},(100,200)]) def btn1(self): self.a1 = ['World',2,{'age':30},(500,600)] def on_a1(self,instance,x): print('a1 change to {}'.format(self.a1)) class Myapp(App): def build(self): return MyLayout() if __name__ == '__main__': Myapp().run()
在以上程式碼中,我在MyLayout中宣告a1為ListProperty類,其值為['hello',1,{'age':24},(100,200)],並宣告btn1方法,當btn1方法被呼叫時,a1的值被指定為['World',2,{'age':30},(500,600)],最後,當a1發生改變時,自動呼叫on_a1方法,列印'a1 change to {}'.format(self.a1)
在my.kv中寫上此段程式碼:
<MyLayout>: rows:2 Label: text:root.a1[0] Button: text: 'A1' size_hint: 0.3,0.3 on_press: root.btn1()
在以上程式碼中,我指定Label的text屬性為root.a1[0](root即為MyLayout)
執行結果如下:
ListProperty使用技巧:
1.淺拷貝觀念:此觀念為python的基礎觀念,詳細說明請自行google,此處僅列出官方範例做為參考
>>> class MyWidget(Widget): >>> my_list = ListProperty([]) >>> widget = MyWidget() >>> my_list = [1, 5, {'hi': 'hello'}] >>> widget.my_list = my_list >>> print(my_list is widget.my_list) False >>> my_list.append(10) >>> print(my_list, widget.my_list) [1, 5, {'hi': 'hello'}, 10] [1, 5, {'hi': 'hello'}]
沒有留言:
張貼留言