Beeware: ¡Escribe Apps con Python!

beeware-python

Escribir aplicaciones no es una fortaleza de Python y no hay muchas herramientas para hacerlo. Por esta razón, no encuentras aplicaciones de escritorio/móviles escritas en Python con mucha frecuencia. Buscando algo que nos ayude a escribir aplicaciones, encuentro dos herramientas que tienen esta misión llamadas Kivy y BeeWare. Hoy vamos a hablar sobre Beeware, que es totalmente de código abierto.

La documentación oficial dice que BeeWare le permite escribir su aplicación en Python y lanzarla en múltiples plataformas. No es necesario reescribir la aplicación en múltiples lenguajes de programación. Significa que no hay problemas con las herramientas de compilación, entornos, compatibilidad, etc.

Beeware tiene una suite de herramientas y, en conjunto, le permite crear aplicaciones en diferentes plataformas, todas las herramientas son de código abierto con licencia BSD. Puede escribir aplicaciones nativas para Android, iOS, escritorio y multiplataforma.

Echemos un vistazo a algunas de sus herramientas principales:

Briefcase: Briefcase es una herramienta para convertir un proyecto de Python en una aplicación nativa independiente. Puede ejecutar el proyecto y puede obtener un instalador MSI para Windows, un paquete de aplicaciones para Mac, o puede crear una aplicación Android/IOS e iniciarla en un simulador o dispositivo.

Toga: la página de Beeware describe Toga como widgets del sistema nativo, no como temas. Cuando ve que se ejecuta una aplicación Toga, no solo se ve como una aplicación nativa: es una aplicación nativa. Toga está disponible en Mac OS, Windows, Linux (GTK) y plataformas móviles como Android y iOS. Más adelante en esta publicación, verá un ejemplo sencillo de uso de Toga.

Batavia: Batavia es una implementación de la máquina virtual Python, escrita en JavaScript. Con Batavia, puede ejecutar el código de bytes de Python en su navegador. Batavia ofrece la opción de escribir lógica del lado del cliente en Python, en lugar de JavaScript.

Cricket: Cricket es una herramienta gráfica que lo ayuda a ejecutar sus conjuntos de pruebas.

Para estas herramientas, hay algunas plantillas Cookiecutter para poder iniciar rápidamente.

Ahora, vamos a escribir una aplicación de escritorio fácil con Toga. Es solo una entrada, una etiqueta y un botón, el usuario escribe su nombre y luego hace clic en el botón y la etiqueta te saluda.

Como es habitual cuando trabajamos con Python, debemos comenzar creando un entorno virtual:

mkvirtualenv beeware-test -p $(which python3)

Luego instala toga:

pip install --pre toga

pre : esta opción incluye versiones preliminares y de desarrollo. Por defecto, pip solo encuentra versiones estables.

Crea el archivo python salute.py y añada el código:

import toga
from toga.style.pack import *


def build(app):
   box = toga.Box()
   name_label = toga.Label('Name:', style=Pack(text_align=LEFT))
   name_input = toga.TextInput()
   salute_label = toga.Label("", style=Pack(text_align=LEFT))

   def button_handler(widget):
       salute_label.text = "Hello {}!".format(name_input.value)
  
   button = toga.Button('Salute', on_press=button_handler)
   button.style.padding = 20
   button.style.flex = 1
   name_label.style.update(width=100, padding_left=10)
   name_input.style.update(width=100, padding_top=10, padding_left=10)
   salute_label.style.update(width=100, padding_top=10, padding_left=10)

   box.add(name_label)
   box.add(name_input)
   box.add(salute_label)
   box.add(button)

   box.style.update(direction=COLUMN, width=100, padding_top=10)
   return box


def main():
   return toga.App('First App', 'org.pybee.salute', startup=build)


if __name__ == '__main__':
   main().main_loop()

Hay 4 puntos destacados principales para este código:

  • toga.Box(): Un box es un objeto que se puede usar para contener varios widgets y para definir el relleno alrededor de los widgets.
  • add(): La función add del box, agregará cada widget en la vista final.
  • return box: Este box contendrá todo el contenido de la interfaz de usuario.
  • main(): Instancia la aplicación.

Para más detalles, visita el sitio de Toga. Finalmente, para correr tu aplicación:

python -m salute

Es genial saber que con Python podemos crear nuestras propias aplicaciones. Como puedes ver en el ejemplo, pocas líneas de código pueden configurar e iniciar una aplicación, con un poco más de esfuerzo, puedes configurarla para usarla en Android o iOS. Ahora, ten en cuenta que la madurez de Beeware es baja, no la uses para cosas críticas, todavía no está lista para aplicaciones de misión crítica, es una buena opción para proyectos universitarios o para contribuir con el código abierto, hay muchas cosas que mejorar y tú puedes ayudar.