Tres elementos básicos y los mas utilizados casi cualquier lenguaje de programación con interfaz gráfica. si hablamos de los cuadros de texto, etiquetas y botones.
En kivy los conoceremos cómo:
Cuadro de texto = TextInput
Etiqueta= Label
Botón = Button
En kivy los conoceremos cómo:
Cuadro de texto = TextInput
Etiqueta= Label
Botón = Button
Como todo lenguaje de programación, es común usar comandos en ingles pero no te preocupes mas adelante veras que fácil son de utilizar.
Por lo tanto he creado este pequeño tutorial donde aprenderás a usar estos tres elementos, creando una pequeña aplicación donde ingresaras tu nombre en el cuadro de texto y agregaremos una función para que dicho nombre se muestre en nuestra etiqueta. Con dos botones uno para mostrar el texto y el otro para limpiar el cuadro de texto y la etiqueta.
Misión del Tutorial
Mostrarte lo fácil que es usar kivy, aclarando cada detalle de forma que puedas crear tus propias aplicaciones.
Es momento de empezar a codificar.
En kivy es fácil crear aplicaciones simplemente tenemos que exportar los elementos que vamos a utilizar del framework a nuestro proyecto, a estos elementos los llamaremos módulos.
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.core.window import Window
Como ves importamos 4 módulos.
- El primer módulo nos sirve parea crear la aplicación, básicamente lo usaremos siempre.
- Con el segundo modulo podemos agregar lenguaje KV que nos sirve para crear los gráficos de nuestra aplicación.
- El tercer modulo es un simple contenedor donde agregaremos los botones y etiquetas usando lenguaje KV.
- El cuarto modulo lo utilizare simplemente para cambiar el color de fondo de nuestra aplicación.
La otra parte de nuestro código sera este.
class test_screen(FloatLayout):
def mostrar(self, text):
pass
def borrar(self, text):
pass
class TestApp(App):
def build(self):
Window.clearcolor= 1,1,1,1
return test_screen()
if __name__ == '__main__':
TestApp().run()
Las aplicación creadas en kivy se basan en la programación orientada a objetos. Por lo tanto usamos el comando class para crear uno. En este caso creamos dos objetos, el primero
class test_screen(FloatLayout):
def cambiar(self, text):
pass
def borrar(self):
pass
Este sera nuestro contenedor dentro de el agregaremos los botones y la etiqueta, además agregue dos funciones dentro de el, que nos servirán mas adelante. Si notas esta clase usara el modulo FloatLayout que es uno de los muchos layouts que kivy brinda.
Nuestro segundo objeto es el encargado de crear la aplicación usando el modulo App que ya exportamos.
class TestApp(App):
def build(self):
Window.clearcolor= 1,1,1,1
return test_screen()
También usaremos el modulo Windows donde cambiaremos el color de fondo de pantalla de nuestra app usando código RGBA.
Genial nuestra aplicación lo único que le faltaría seria la función que haga que todo el código funcione, esto lo podemos hacer de 2 formas la primera seria usando está declaración.
if __name__ == '__main__':
TestApp().run()
Y la segunda usando esta declaración
MyApp = TestApp()
MyApp.run()
Cualquiera de las dos es valida aunque la mas usada es la primera declaración.
Repasando lo anterior nuestro código quedaría asi.
from kivy.app import Appfrom kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.core.window import Window
class test_screen(FloatLayout):
def cambiar(self, text):
pass
def borrar(self):
pass
class TestApp(App):
def build(self):
Window.clearcolor= 1,1,1,1
return test_screen()
if __name__ == '__main__':
TestApp().run()
Puedes guardar el archivo así:
ejempo.py
Pero si corremos este código simplemente tendríamos como resultado una pantalla blanca. Es momento de agregar los botones para eso usaremos el lenguaje KV.
Para usar el lenguajes KV sin crear otro archivo podemos usar el modulo Builder que nos permite usarlo desde aquí usando este comando:
Builder.load_string("""
#aqui podemos usar lenguaje KV.
""")
Nuestra aplicación quedaría así.
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.core.window import Window
Builder.load_string("""
#aqui podemos usar lenguaje KV.
""")
class test_screen(FloatLayout):
def cambiar(self, text):
pass
def borrar(self):
pass
class TestApp(App):
def build(self):
Window.clearcolor= 1,1,1,1
return test_screen()
if __name__ == '__main__':
TestApp().run()
Ahora es momento de hacer referencia de nuestro contenedor que ya construimos para poder agregar los botones y la etiqueta dentro de el. Para esto dentro del comando anterior agregamos esta nueva linea.
Builder.load_string("""
<test_screen>:
""")
De esta forma todo lo que ingresemos debajo de <test_screen>: se enlasara con nuestro objeto test_screen de nuestra app.
Para agregar el cuadro de texto y la etiqueta simplemente ingresamos los correspondientes comandos dentro de : de esta manera:
Si notas he agregado varias propiedades a cada elemento a continuación explicare para que sirve cada una.
Id: nos sirve para identifica un elemento en todo nuestro codigo, por lo tanto podemos crear funciones para cambiar o asignarle un valor si así deseamos.
text: para mostrar texto en nuestra etiqueta o agregarle nombre a un boton.
font_size: para incrementar el tamaño de las letras
size_hint: para definir el tamaño de nuestro elemento usando el tamaño total disponible usando representaciones en x como en y ejemplo si agregamos esta propiedad a un botón size_hint: 1,0 .5 el botón tomara el 100% de espacio disponible en x así mismo el 50% en y.
pos_hint: para posicionar un objeto en la pantalla de acuerdo a los porcentajes dados ejemplo.
pos_hint:{'center_x':.5,'y':.6}
De esta forma nuestro objeto quedara centrado en x y un poquito arriba del centro de y.
color: para definir el color del texto
hint_text: para agregar un texto de fondo en nuestro cuadro de texto.
Y por ultimo además de poder definir el tamaño de un objeto de acuerdo al tamaño de nuestra pantalla, podemos definir el alto y ancho del objeto por lo tanto tendría el mismo tamaño no importando el tamaño de la pantalla. Para esto tenemos que definirlo así
size_hint: None, Noneheight: 200 #alto del objetowidth: 300 #ancho del objeto
He definido un botón como "mostrar" y el otro como "borrar", si corremos nuestro código asta aquí tendríamos la interfaz pero aun no pasaría nada si presionara los botones no funcionaria, para hacer esto posible agregaremos la propiedad on_press que nos perminte llamar a la función que ya creamos al principio usando el método "root.nombredefunción"
En este caso seria:
on_press: root.mostrar(text.text) #primer botón
on_press: root.borrar() #segundo botón
Ahora nos toca la parte donde nuestra aplicación toma sentido, crearemos el código de cada función.
Para poder agregar el texto que ingresamos en el cuadro de texto a nuestra etiqueta simplemente aremos esto:
def cambiar(self, text): self.text = text self.ids['label'].text = text
El código funciona así:
Primero; le agregamos un id a nuestra etiqueta/Label en este caso label, también le agregamos un id a nuestro cuadro de texto/TextInput en este caso text esto nos sirve para poder modificar cualquier propiedad de nuestros elementos.Segundo; en la propiedad on_press no solo llamamos a la función, sino que también ingresamos la información que esta guardada en la propiedad text de nuestro cuadro de texto.
Tercero; nuestra información ingresa a la función, la agregamos a una variable y luego usamos el comando self.ids[label''].text donde declaramos que la propiedad text de la etiqueta con id label tomara el valor que le asignemos,en esta ocasión el texto que nosotros ya ingresamos en el cuadro de texto.
Por ultimo para poder limpiar o eliminar el texto de cada elemento usaremos como base cuesto código anterior solo que en esta ocasión no agregamos ninguna información sobre ella, de esta manera:
def borrar(self): self.ids['label'].text = "" self.ids['text'].text = ""
De esta forma terminaría todo nuestro código, por lo que ahora ya podemos ver como funciona nuestra pequeña aplicación.
Trate de explicar cada de detalle y cualquier duda o sugerencia por favor comenta. gracias.
wow. me sorprende que sea el primero en comentar ya que es la mejor explicación que e leído en mis 80 minutos de buscar en Google.
ResponderEliminarmis felicitaciones desde Chile
Gracias
EliminarSuper la expolicación, una pregunta ... como se si tengo instalado todos las herramientas para programar con Kivy y python, y que editor de para escribir el codigo me recomiendas
ResponderEliminarOla el editor que yo uso es Pycharm, es muy bueno. Pero necesitas una PC que tenga al menos 4 de ram y que sea procesador core i5 para que no te de problema.. .. y kivy instala por si sola todas las librerías que necesita.. para descargarlo visita kivy.org
EliminarMuchas gracias por compartir tu conocimeinto
ResponderEliminarHola, me gustaria saber como puedo agregar un input pero que este no permita escribir. desactivarlo para el usuario.
ResponderEliminarExcelento post, muchas gracias.
Desde la parte del archivo kv le agregas al TextInput la propiedad 'disabled: true' y listo
Eliminar