kivy root is not defined code example

Example: how to change a kivy button text in kivy lang from python file

from kivy.app import App
from kivy.lang.builder import Builder
from kivy.properties import StringProperty
from kivy.uix.boxlayout import BoxLayout


class Container(BoxLayout):
    message = StringProperty()

    def retranslate(self, language):
        texts = {"en": "Hello World", "fr": "Salut monde"}
        self.message = texts.get(language, "")


Builder.load_string(
    """
<Container>:
    orientation: 'vertical'
    Button:
        text: root.message
    Button:
        text: "Eng"
        on_press: root.retranslate("en")
    Button:
        text: "Fra"
        on_press: root.retranslate("fr")
"""
)


class MyApp(App):
    def build(self):
        w = Container()
        w.retranslate("en")
        return w


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

Tags:

Misc Example