2017-07-29 16 views
0

Hallo eine einfache Frage, die ich nicht eine Antwort finden kann, sagen, dass ich eine Klasse:Python Kivy, Referenzklassenvariable in KV Code

class KivyApp(App): 
    someVariable = "blahblah" 

dann in KV Code sagen, dass ich Text setzen wollen, die ist der Wert von 'someVariable' Wie kann ich das tun? Ich habe 'KivyApp.someVariable', 'app.someVariable' 'root.KivyApp.someVariable' ect ... und andere Permutationen ausprobiert. Es tut mir so leid um die grundlegende Frage, aber ich bin ratlos. Schätze alle Antworten.

+0

Meinst du "Zugriff" auf den Text, der der Wert von 'someVariable' ist? – quamrana

+0

@quamrana ja das ist was ich will –

Antwort

0

Dies funktioniert

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() 

Dies ist nicht

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() 

Ich glaube Kivy nicht die Eigenschaft gesetzt, wenn er den Text auf den Button oder in Ihrem Fall Etikett zu initialisieren.

Aber im Allgemeinen würde ich diesen Text an das Etikett selbst kleben.

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() 
Verwandte Themen