jueves, marzo 31, 2016

Kivy, el framework multiplataforma definitivo para Python

jueves, marzo 31, 2016

Hace unos días manteniendo una conversación con un antiguo compañero de trabajo me comentó que había estado en un congreso sobre Raspberry Pi 3 y que entre todos los asistentes se les sorteaba una (y al que no le tocaba una le daban un modelo anterior, en este caso a él le toco una preciosa y potente Raspberry Pi 2).

Me comentó que donde estaba tenían un monitor para que el que quisiera pudiera utilizarlo para expresar su creatividad.

Hablamos sobre que lo mejor que podía hacer era empezar a usar Python, y salió el tema de Kivy (¿qué es eso?).


Kivy es una librería para Python y Cython (la implementación de python en C++) de interfaces gráficas, compatible con todas las plataformas. Y en realidad es bastante sencillo de entender una vez que le coges el truco (como pasa en todo este mundillo con todos los lenguajes, sólo necesitas un pequeño empujoncito y algo de experiencia para seguir metodologías).



Con un poco de ayuda y usando el core de TVBOX se ha desarrollado un formulario que es capaz de interactuar y descargar links de los mismos proveedores. A mí me interesaba realizar ese desarrollo por el simple hecho de que cuando se sube un fix al TVBOX realizo todo el proceso "from scratch" y así todo es mucho más ágil (el diseño de la interfaz no es 100% mío, tengo un pésimo gusto con las GUIs).






Con un simple comando que se puede agregar a un script se lanza:

python2.7 main.py

En un futuro con un poco de gana intentaré agregar el segundo formulario como parte de una lista y así poder tener un histórico de las descargas, ya que tal como está la implementación se permite reanudar descargas desde donde se dejó, y se guarda en el store.json los links originales, con vistas a mejorar.


También gracias además al proyecto python-for-android y buildozer he podido testear la aplicación en Android:

buildozer init
  
Se genera un buildozer.spec y una carpeta .buildozer, el primer archivo mentado es el que hay que configurar con los las versiones de Android soportadas, los permisos de INTERNET y WRITE_EXTERNAL_STORAGE, nombre, paquete, icono, imagen splash cuando se abre la aplicación y posteriormente:

buildozer android deploy run logcat

Con ello se generará un .apk en la carpeta bin (aunque deploy run logcat ya habrán hecho todo el trabajo de instalar). Si queréis cambiar código incluir "debug" entre android y deploy para generar una versión de desarrollo.

He podido comprobar que existe un bug para las versiones 6.x abierto en github relacionado con el portapapeles, no es que sea un bug en sí mismo, es que están trabajando en la implementación del portapapeles en esa versión de Android (gracias Google por seguir los estándares de mejora de Canonical y Microsoft y moverlo hasta el portapapeles)
Bit
Hide Me!