2015-02-23 102 views
1

如何使用動態類將信息從子類中傳遞到其父類中?在kvlang(Kivy)中使用動態類將信息從子類傳遞給父類

我有以下簡單的KV代碼和Python代碼:

KV:

BoxLayout: 
Label: 
    id: label_id 
    text: 'label' 
Button1: 
    mylabel: label_id 
    text: self.mylabel.text 

<[email protected]>: 

的Python:

import kivy 
from kivy.app import App 

class Test2App(App): 
    pass 

if __name__ == '__main__': 
    Test2App().run() 

這工作,使得該按鈕的文本相同作爲標籤的文字。

但我想要做的是設置按鈕的文本在父類中的內容:

BoxLayout: 
Label: 
    id: label_id 
    text: 'label' 
Button1: 
    mylabel: label_id 

<[email protected]>: 
    text: self.mylabel.text 

這顯然會導致一個錯誤,因爲Button1的是不知道mylabel的。但我想要它。我知道我可以通過在Python文件中聲明一個屬性來解決這個問題,但是我寧願只在kv文件中有一個解決方案。

有沒有人有一個想法如何做到這一點?

編輯:

有趣的是,我能夠傳遞信息作爲StringProperty。下面的代碼工作,我得到我的按鈕右側的文本:

BoxLayout: 
Label: 
    id: label_id 
    text: 'label' 
Button1: 
    my_label_text: label_id.text 

<[email protected]>: 
    my_label_text: '' 
    text: self.my_label_text 

有誰知道我可以通過整個標籤(作爲對象)的家長嗎?

回答

1

試試這個:

BoxLayout: 
    Label: 
     id: label_id 
     text: 'label' 
    Button1: 
     mylabel: label_id 

    <[email protected]>: 
     mylabel: None 
     text: self.mylabel.text if self.mylabel is not None else '' 

mylabel: None自動創建一個屬性。

+0

感謝您的回覆。問題是信息不會從孩子傳遞給父母。我得到的是一個沒有文字的按鈕。 – yoel 2015-02-24 19:13:20

+0

啊,我認爲在我的例子中實際上有一個錯誤,稍後會修復。 – inclement 2015-02-24 19:34:12

+0

我剛剛發現我能夠將信息作爲StringProperty傳遞。請參閱編輯的問題 – yoel 2015-02-27 20:43:11