Cómo cambiar el texto de una etiqueta en el lenguaje kivy con python

Me preguntaba cómo podría cambiar el texto de una etiqueta hecha dentro del lenguaje Kivy usando Python. Al igual que, ¿cómo puedo hacer que las entradas de usuario de python se realicen como el texto de una etiqueta en kivy? (Por cierto, tengo el formato correcto en el progtwig real, pero lo junté para pegarlo en stackoverflow). Decir si quisiera hacer que el texto de la etiqueta del código fuera un número aleatorio generado en Python, ¿cómo podría hacerlo? ¿ese?

from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Screen from kivy.graphics import Color, Rectangle from kivy.properties import ObjectProperty # Create both screens. Please note the root.manager.current: this is how # you can control the ScreenManager from kv. Each screen has by default a # property manager that gives you the instance of the ScreenManager used. Builder.load_string("""   : GridLayout: cols: 4 row_force_default: True col_default_width: 175 row_default_height: 150 padding: 15 spacing: 15 canvas.before: BorderImage: # BorderImage behaves like the CSS BorderImage border: 10, 10, 10, 10 source: '/Users/clayhigh/Desktop/kivy/aot.png' pos: self.pos size: self.size Button: text: 'Goto settings' background_color: 1,0,0,0.5 on_press: root.manager.current = 'settings' ButImage: on_press: root.manager.current = 'UBW' id: but size_hint: .5, .5 opacity: 1 if self.state == 'normal' else .5 allow_stretch: True keep_ratio: False source: 'http://sofes.miximages.com/python/1361742626_beautiful-ocean-beautiful-pictures-27115524-1440-900.jpg' Label: center: but.center text: "UBW" color: 0.78,0.145,0.016,2 ButImage: id: lh size_hint: .5, .5 opacity: 1 if self.state == 'normal' else .5 allow_stretch: True keep_ratio: False source: 'http://sofes.miximages.com/python/1361742626_beautiful-ocean-beautiful-pictures-27115524-1440-900.jpg' Label: center: lh.center text: "LH 2" color: 0,0,0,1 ButImage: id: ttl size_hint: .5, .5 opacity: 1 if self.state == 'normal' else .5 allow_stretch: True keep_ratio: False source: 'http://sofes.miximages.com/python/1361742626_beautiful-ocean-beautiful-pictures-27115524-1440-900.jpg' Label: center: ttl.center text: "TwTl" color: 0,0,0,1 ButImage: id: gris size_hint: .5, .5 opacity: 1 if self.state == 'normal' else .5 allow_stretch: True keep_ratio: False source: 'http://sofes.miximages.com/python/1361742626_beautiful-ocean-beautiful-pictures-27115524-1440-900.jpg' Label: center: gris.center text: "Gris" color: 0,0,0,1 ButImage: id: shig size_hint: .5, .5 opacity: 1 if self.state == 'normal' else .5 allow_stretch: True keep_ratio: False source: 'http://sofes.miximages.com/python/1361742626_beautiful-ocean-beautiful-pictures-27115524-1440-900.jpg' Label: center: shig.center text: "Shig" color: 0,0,0,1 Button: text: 'Test3' background_color: 1,0,0,0.5 Button: text: 'Test4' background_color: 1,0,0,0.5 Button: text: 'Quit' background_color: 1,0,0,0.5 on_press: App.on_stop : GridLayout: row_force_default: True row_default_height: 100 cols: 2 canvas.before: BorderImage: # BorderImage behaves like the CSS BorderImage border: 10, 10, 10, 10 source: '/Users/clayhigh/Desktop/kivy/ato.jpeg' pos: self.pos size: self.size Button: text: 'Button' color: 0,0,.5 background_color: 1,0,0,1 Button: text: 'Back to menu' background_color: 1,0,0,1 on_press: root.manager.current = 'menu' : GridLayout: row_force_default: True row_default_height: 100 cols: 2 canvas.before: Color: rgb: .5, .5, .5 Rectangle: pos: self.pos size: self.size Color: rgb: 1, 1, 1 BorderImage: # BorderImage behaves like the CSS BorderImage border: 10, 10, 10, 10 source: '/Users/clayhigh/Desktop/kivy/fsn.jpg' pos: self.pos size: self.size Button: text: 'Back to menu' color: 0,0,.5 on_press: root.manager.current = 'menu' background_color: 1,0,0,1 Label: id: AName text: "FS/N: UBW" font_size: '24sp' """) # Declare both screens class MenuScreen(Screen): pass class SettingsScreen(Screen): pass class UBW(Screen): pass # Create the screen manager sm = ScreenManager() sm.add_widget(MenuScreen(name='menu')) sm.add_widget(SettingsScreen(name='settings')) sm.add_widget(UBW(name='UBW')) class TestApp(App): def build(self): return sm if __name__ == '__main__': TestApp().run() 

El texto de una etiqueta puede ser una propiedad kivy, que se puede cambiar posteriormente y, como es una propiedad kivy, se actualizará automáticamente en todas partes. Aquí hay un ejemplo de tu .py

 from kivy.app import App from kivy.uix.widget import Widget from kivy.properties import StringProperty import random class YourWidget(Widget): random_number = StringProperty() def __init__(self, **kwargs): super(YourWidget, self).__init__(**kwargs) self.random_number = str(random.randint(1, 100)) def change_text(self): self.random_number = str(random.randint(1, 100)) class YourApp(App): def build(self): return YourWidget() if __name__ == '__main__': YourApp().run() 

y tu .kv

 : BoxLayout: size: root.size Button: id: button1 text: "Change text" on_release: root.change_text() Label: id: label1 text: root.random_number 

Cuando haga clic en el botón, llamará a la función change_text() , que cambiará aleatoriamente el texto de la etiqueta a un entero aleatorio entre 1 y 100.