2017-07-29 122 views
0

你好一個簡單的問題,我無法找到答案, 說我有一個類:的Python Kivy,在KV代碼引用類變量

class KivyApp(App): 
    someVariable = "blahblah" 

然後在KV代碼說,我希望把它的文本是'someVariable'的值 我該怎麼做?我嘗試過'KivyApp.someVariable','app.someVariable''root.KivyApp.someVariable'等等等等。所以基本問題的抱歉,但我很難過。欣賞任何答案。

+0

你的意思是'access'是'someVariable'的值嗎? – quamrana

+0

@quamrana是的,這是我想要的 –

回答

0

這是工作

from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.label import Label 
from kivy.properties import StringProperty 



kv_str = Builder.load_string(""" 
Button: 
    on_press: print(app.label_text) 
""") 

class MyApp(App): 
    label_text = StringProperty() 

    def __init__(self, **kwargs): 
     self.label_text = 'Palim' 
     super(MyApp, self).__init__(**kwargs) 

    def build(self): 
     return kv_str 

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

這不是

from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.label import Label 
from kivy.properties import StringProperty 



kv_str = Builder.load_string(""" 
Button: 
    text: app.label_text 
    on_press: print(app.label_text) 
""") 

class MyApp(App): 
    label_text = StringProperty() 

    def __init__(self, **kwargs): 
     self.label_text = 'Palim' 
     super(MyApp, self).__init__(**kwargs) 

    def build(self): 
     return kv_str 

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

我相信,當它被初始化按鈕,或在您的案件標籤中的文本kivy沒有設置該屬性。

但是一般來說,我會把這個文本粘貼到標籤本身。

from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.label import Label 


class Lbl(Label): 

    def __init__(self, **kwargs): 
     self.text = 'Palim' 
     super(Lbl, self).__init__(**kwargs) 


kv_str = Builder.load_string(""" 
Lbl: 
""") 

class MyApp(App): 

    def build(self): 
     return kv_str 

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