Python - Personalizar en kv objeto de py

 
Vista:
Imágen de perfil de Jaime
Val: 526
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Personalizar en kv objeto de py

Publicado por Jaime (136 intervenciones) el 23/11/2019 03:50:46
Hola
Lo que necesito es saber como hago para personalizar un objeto ya instanciado.
1
2
3
4
5
6
7
8
9
10
11
#Archivo py
class Principal(ScreenManager):
    def __init__(self, **kwargs):
        super(Principal, self).__init__(**kwargs)
        self._principal=Screen(name='Principal')
        self._layout=AnchorLayout()
        self._boton=Button(text='Hola')
 
        self._layout.add_widget(self._boton)
        self._principal.add_widget(self._layout)
        self.add_widget(self._principal)

1
2
3
4
#Archivo kv
#:kivy 1.11.1
<Principal>:
    root._boton.text:'hola2'    #Esta linea me lanza error. Como hago para cambiar el texto del boton?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Personalizar en kv objeto de py

Publicado por tincopasan (1082 intervenciones) el 24/11/2019 18:45:50
me gustaría saber como ejecutas ese código, o sea en que momento se ejecuta correctamente la clase Principal, supongo que la llamas desde una función desde otra clase App, pero ¿funciona aún sin usar el archivo *.kv?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Jaime
Val: 526
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Personalizar en kv objeto de py

Publicado por Jaime (136 intervenciones) el 25/11/2019 11:00:11
Efectivamente, ejecuto el código desde la función build de una clase App.
Y el código me funcionó con o sin el archivo *.kv; aunque yo tengo el archivo *.kv
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Personalizar en kv objeto de py

Publicado por kip (257 intervenciones) el 24/11/2019 20:03:22
Hola, lo que podrías hacer es usar alguna propiedad basada en StringProperty https://kivy.org/doc/stable/api-kivy.properties.html#kivy.properties.StringProperty

Un ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager
from kivy.properties import StringProperty
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.button import Button
 
class Principal(ScreenManager):
    text_button = StringProperty('Valor por defecto')
 
    def __init__(self, **kwargs):
        super(Principal, self).__init__(**kwargs)
        self._principal=Screen(name='Principal')
        self._layout=AnchorLayout()
        self._boton=Button(text=self.text_button)
 
        self._layout.add_widget(self._boton)
        self._principal.add_widget(self._layout)
        self.add_widget(self._principal)
 
class TestApp(App):
    def build(self):
        return Principal()
 
if __name__ == '__main__':
    TestApp().run()

1
2
<Principal>:
    text_button: 'Ejemplo'

Si no tenemos el archivo .kv, se tomara el valor por defecto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar