Desarrollo de aplicaciones multiplataforma con python y Kivy
-
Upload
ernesto-crespo -
Category
Software
-
view
1.038 -
download
9
Transcript of 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
#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.
#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
#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).
#MéridaTechMeetup
Soporta
● GNU/Linux (Debian, Ubuntu, Fedora, ArchLinux, etc).
● Raspberry Pi
● IOS de Apple
● OSX de Apple
● Windows
● Android
#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/
#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()
#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()
#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
#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()
#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)
#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()
#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()
#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
#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()
#MéridaTechMeetup
Demostraciones!!
#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/
#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