Desarrollo de aplicaciones multiplataforma con python y Kivy

18
#MéridaTechMeetup Desarrollo de aplicaciones multiplataforma con python y Kivy Ernesto Crespo Blog: http://blog.crespo.org.ve Blog: http://ecrespo.github.io Github: https://github.com/ecrespo Bitbucket https://bitbucket.org/ecrespo Twitter: https://twitter.com/_seraph1

Transcript of Desarrollo de aplicaciones multiplataforma con python y Kivy

Page 1: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Desarrollo de aplicaciones multiplataforma con python y Kivy

Ernesto Crespo

● Blog: http://blog.crespo.org.ve

● Blog: http://ecrespo.github.io

● Github: https://github.com/ecrespo

● Bitbucket https://bitbucket.org/ecrespo

● Twitter: https://twitter.com/_seraph1

Page 2: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Desarrollo de aplicaciones multiplataforma con python y Kivy

“Sé curioso. Lee mucho. Trata nuevas cosas. Creo que lo que mucha gente llama inteligencia solo se reduce a la curiosidad”. Aaron Swartz

"Desarrollo de aplicaciones multiplataforma con python y Kivy " by Ernesto Crespo is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.

Page 3: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Desarrollo de aplicaciones multiplataforma con python y Kivy

Agenda:

● ¿Qué es Kivy?

● Soporta

● Instalación

● “Hola Mundo!” primera versión

● “Hola Mundo!” segunda versión

● Un botón

● Widget scatter (drag, rotar y escala)

● Reproductor de vídeo

● Demostraciones

● Referencias

● Preguntas

Page 4: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

¿Qué es kivy?

Es una librería que permite usar Python para crear aplicaciones para el escritorio y

dispositivos móviles con soporte multitouch (multiplataforma).

Page 5: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Soporta

● GNU/Linux (Debian, Ubuntu, Fedora, ArchLinux, etc).

● Raspberry Pi

● IOS de Apple

● OSX de Apple

● Windows

● Android

Page 6: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Instalación

● Debian, Ubuntu y LinuxMint

● apt-get install python-kivy python3-kivy python-kivy-examples

● Con pip de Python

● pip install kivy (aplica para Linux en general, Windows y Mac si tienen pip instalado)

● Android e IOS (se necesita el SDK y NDK de Android en el equipo )● https://bytedebugger.wordpress.com/2014/05/24/how-to-build-python-application-for-android-ios-and-desktop/

Page 7: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Primer programa (Hola Mundo, versión 1):#!/usr/bin/env python

#Se importa kivy

import kivy

#Se válida que se esté usando la versión 1.8.0 de kivy

kivy.require('1.8.0')

#Se importa la clase App y el widget Label

from kivy.app import App

from kivy.uix.label import Label

#Se crea la clase HolaApp que hereda de App

class HolaApp(App):

#Se crea la función build

def build(self):

#Se retorna el widget Label con un texto y el tamaño del mismo

return Label(text='Hola Mundo!!!',

font_size=100)

if __name__ == "__main__":

#Se instancia la clase y se ejecuta

HolaApp().run()

Page 8: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Primer programa (Hola Mundo, versión 2): hola2.py#!/usr/bin/env python

#Se importa kivy

import kivy

#Se valida que se use la versión 1.8.0 de kivy

kivy.require('1.8.0')

#Se importa la case App y el widget Label

from kivy.app import App

from kivy.uix.label import Label

#Se crea la Clase Hola2App que hereda de App

class Hola2App(App):

#Se define la función build que retorna el widget Label

#Esta vez sin ningún argumento ya que será manejado por el archivo hola2.kv

def build(self):

return Label()

if __name__ == "__main__":

#Se instancia la clase Hola2App y se ejecuta.

Hola2App().run()

Page 9: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Primer programa (Hola Mundo, versión 2): hola2.kv# File name: hola2.kv

#:kivy 1.8.0

<Label>:

text: 'Hola mundo v 2!'

font_size:100

Page 10: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Segundo programa (Botón): hola3.py#!/usr/bin/env python

#Se importa kivy

import kivy

#Se valida que se tiene la versión 1.8.0 de kivy

kivy.require('1.8.0')

#Se importa la clase App y el widget Button

from kivy.app import App

from kivy.uix.button import Button

#Se crea la clase Hola3App que hereda de App

class Hola3App(App):

#Se define el método build que devuelve el widget Button sin argumentos.

def build(self):

return Button()

if __name__ == "__main__":

#Se crea la instancia de la clase y se ejecuta.

Hola3App().run()

Page 11: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Segundo programa (Botón): hola3.kv# File name: hello3.kv

#:kivy 1.8.0

<Button>:

text: 'Hola mundo v3!'

font_size:100

background_color:(0,0,1,1)

Page 12: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Widget de comportamiento scatter (drag, rotar, escala): hola4.py#!/usr/bin/env python

#se importa kivy

import kivy

#Se válida que la versión de kivy sea la 1.8.0

kivy.require('1.8.0')

#Se importa la clase App

from kivy.app import App

#Se importa Scatter, Label y FloatLayout

from kivy.uix.scatter import Scatter

from kivy.uix.label import Label

from kivy.uix.floatlayout import FloatLayout

#Se crea la clase Hola4App que hereda de App

class Hola4App(App):

#Se define el método build

def build(self):

#Se instancia al objeto FloatLayout

f = FloatLayout()

#Se instancia al objeto Scatter

s = Scatter()

#Se instancia al objeto Label con el texto y el tamaño.

l = Label(text="Hola v4",font_size=100)

#Se agrega a FloatLayout la instancia del widget scatter

f.add_widget(s)

#Se agrega el widget Label a Scatter

s.add_widget(l)

#Se retorna la instancia de FloatLayout

return f

if __name__ == "__main__":

#Se ejecuta run de la instancia del objeto Hola4App

Hola4App().run()

Page 13: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Reproductor de Vídeo: video.py#Se importa kivy y se valida que es la versión 1.8.0

import kivy

kivy.require('1.8.0')

#Se importa la clase App

from kivy.app import App

#Se importa Button, Widget y VideoPlayer

from kivy.uix.button import Button

from kivy.uix.widget import Widget

from kivy.uix.videoplayer import VideoPlayer

#Se instancia Widget y Button.

parent= Widget()

button= Button()

Page 14: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Reproductor de Vídeo: video.py#Se crea la clase MyApp que hereda de App

class MyApp(App):

#Se define el método build.

def build(self):

#Se instancia Button con su texto y tamaño del mismo.

button = Button(text='Reproductor Video', font_size=14)

#Se asocia al boton la función on_button_press al argumento on_press

button.bind(on_press=on_button_press)

#Se agrega button a la instancia de parent

parent.add_widget(button) #agrega el boton

#Retorna parent

return parent

Page 15: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Reproductor de Vídeo: video.py

#Se define la función on_button_press

def on_button_press(self):

#Se crea la instancia de VideoPlayer donde se le pasa como argumento la fuente de vídeo,

#el estado y la opción allow_stretch True.

video= VideoPlayer(source='Tribus-SethGodin.webm', state='play',options={'allow_stretch': True})

#Se agrega el vídeo a la instancia parent

parent.add_widget(video) #add videoplayer

#Se retorna parent

return parent

if __name__ == '__main__':

MyApp().run()

Page 16: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Demostraciones!!

Page 17: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

Referencias:

● Cómo construir una aplicación para Android, IOS y el escritorio● https://bytedebugger.wordpress.com/2014/05/24/how-to-build-python-application-for-android-ios-and-desktop/

● Cómo construir una aplicación python para Android con Ubuntu y Buildozer● https://kivyspacegame.wordpress.com/2014/06/30/tutorial-how-to-build-python-for-android-with-ubuntu-and-buildozer/

● Python para Android (usando el acelerometro:● https://bytedebugger.wordpress.com/2014/07/17/python-for-android-tutorial-1-using-the-accelerometer/

● Python para Android (tomando una foto):● https://bytedebugger.wordpress.com/2015/01/11/python-for-android-tutorial-3-user-interface-with-kivy-designer/

● Python para Android (Interface de usuario con Kivy Designer):● https://bytedebugger.wordpress.com/2015/01/11/python-for-android-tutorial-3-user-interface-with-kivy-designer/

● Python para Android (Creando un juego con Kivy):● https://bytedebugger.wordpress.com/2015/01/24/python-for-android-tutorial-5-our-first-mobile-game-with-kivy/

● Depurando el código con Android Studio:● https://bytedebugger.wordpress.com/2015/01/17/python-for-android-tutorial-4-debugging-your-code-with-android-studio/

● Proyectos de kivy:● https://github.com/kivy/kivy/wiki/List-of-Kivy-Projects

● Creando una aplicación con kivy:● http://archlinux.me/dusty/2013/08/26/creating-an-application-in-kivy-part-9/

Page 18: Desarrollo de aplicaciones multiplataforma con python y Kivy

#MéridaTechMeetup

¿Preguntas?

Descarga de la presentación:http://www.slideshare.net/ecrespo/desarrollo-de-aplicaciones-multiplataforma-con-python-y-kivyBlog:http://blog.crespo.org.ve/search/label/kivy