2014-01-27 2 views
1

그 안에 레이블 텍스트 만 변경하는 위젯을 만들고 싶습니다. 그러나 이것을 변경하는 방법은 Kivy 개체 만 재사용하는 대신 파이썬 코드에서 변경하는 것입니다. kivy를 사용하여 바인딩하는 방법은 무엇입니까?

그래서 나는 다음과 같은 위젯이 있습니다

<[email protected]> 
    color: .1, .5, .8, 1 
    font_size: 16 

<[email protected]> 
    font_size: 16 

<PropertyInputForm>: 
    BoxLayout: 
     size: root.size 
     pos: root.pos 
     orientation: 'horizontal' 
     AmiLabel: 
      text: 'Folder Location' 
      size_hint_x: .5 
     AmiTextInput: 
      text: 'None' 
      size_hint_x: .5 

<MainFormWidget>: 
    BoxLayout: 
     size: root.size 
     pos: root.pos 
     id: foo_bar 
     padding: 5 
     spacing: 5 
     canvas: 
      Color: 
       rgb: (1, 1, 1) 
      Rectangle: 
       pos: self.pos 
       size: self.size 
     orientation: 'vertical' 
     AmiLabel: 
      height: 36 
      size_hint_x: 1 
      size_hint_y: None 
      text: 'Project Name' 
     PropertyInputForm: 
      height: 36 
      size_hint_x: 1 
      size_hint_y: None 
      # I WANT TO CHANGE THE TEXT OF THE LABEL IN HERE 
     PropertyInputForm: 
      height: 36 
      size_hint_x: 1 
      size_hint_y: None 
      # I WANT TO CHANGE THE TEXT OF THE LABEL IN HERE 

내가 파이썬 코드를 건드리지 않고 다른 수준에있는 다른 위젯에서 레이블의 텍스트를 변경하다 할 수 있기를 바랍니다.

¿ 가능합니까?

답변

2

하나의 간단한 방법은 PropertyInputForm에 새 속성을 추가하고 참조하거나 설정하는 것입니다.

<PropertyInputForm>: 
    new_text_property: '' 
    BoxLayout: 
     size: root.size 
     pos: root.pos 
     orientation: 'horizontal' 
     AmiLabel: 
      text: root.new_text_property 
      size_hint_x: .5 
     AmiTextInput: 
      text: 'None' 
      size_hint_x: .5 

하고 나중에

 PropertyInputForm: 
      height: 36 
      size_hint_x: 1 
      size_hint_y: None 
      new_text_property: 'whatever' 

또한 심지어 내가 kivy 1.8에 필요하지 생각입니다하지만, 그것은 오히려을 ObjectProperty보다 StringProperty 수있는 파이썬 클래스에서 new_text_property를 선언해야 할 수도 있습니다.

관련 문제