sábado, 29 de agosto de 2015

PROGRAMACIÓN ANDROID CON PYTHON

¿Qué es Android?

Android es un sistema operativo inicialmente pensado para teléfonos móviles, al igual que iOS, Symbian y Blackberry OS. Lo que lo hace diferente es que está basado en Linux, un núcleo de sistema operativo libre, gratuito y multiplataforma.
El sistema permite programar aplicaciones en una variación de Java llamada Dalvik. El sistema operativo proporciona todas las interfaces necesarias para desarrollar aplicaciones que accedan a las funciones del teléfono (como el GPS, las llamadas, la agenda, etc.) de una forma muy sencilla en un lenguaje de programación muy conocido como es Java. 

Introducción a la programación en Python para Android

Nos llega este interesante proyecto de la mano de Kivy, un framework basado en OpenGL escrito en python que nos permite hacer aplicaciones desktop, IOS, Windows y tambien Android.
Hace poco vimos cómo compilar con el SDK de Android desde otro lenguaje que no sea Java, por ejemplo desde Scala.
Ahora con  Kivy, que es a la vez un framework y un toolkit como PythonQT o como el GTK+ toolkit de Gnome, podemos crear botones, animaciones, elementos visuales desde Python.
Mathieu Virbel, leader programmer de Kivy nos publica hace pocos días este script en Python que permite compilar desde python con el toolchain de Android y de esta forma  obtener un APK para Android.

Introducción: Instalación del Framework Kivy


En nuestro caso no es necesario instalar a kivy, el script de python-for-android nos descaraga directemente el framework de Kivy.
Solo instalamos Kivy para tener los ejemplo Demo a Compilar, no es necesario tenerlo instalado se puede saltar al siguiente paso.
En Mac os, es simple uno se puede bajar el archivo Kivy-1.5.0-osx.dmg para snow Leopard y lo instala como de costumbre, esto instalará todas las dependencias de Python OpenGL


PROGRAMACION ANDROID CON PYTHON




la forma de programa aplicaciones android desde su ordenador, con sl4a, pero mi propósito no es solo enseñarles simplemente como hacerlo desde el móvil o un emulador virtual de android con el SDK si no enseñarles como crear aplicaciones y desde nuestro IDLE de python de nuestro pc y ejecutarlo directamente en el SDK sin necesidad de transferir archivos, aunque hay ya documentación sobre esto, yo voy a crear uno propio con mas claridad y para que todos puedan verlo paso a paso.

primero tendremos que descargar el SDK de android en el siguiente link: http://developer.android.com/sdk/index.html


crear una carpeta en nuestra unidad C: que se llame android y dentro instalar nuestro SDK de tal manera que quedaría así:



una vez instalado vamos a crear nuestro android emulado, por lo que vamos a ejecutar nuestro SDK para poder instalar las APIS necesarias y ejecutamos sdk.exe y instalaremos por ejemplo las de la 3.0



le damos a install packages y después aceptamos la licencia y le damos a install.



una vez instaladas las apis nos vamos a crear nuestro emulador y ejecutamos avd.exe.
Le pulamos en new para crear un nuevo emulador y escogemos la versión que nos hemos descargado antes en este caso la 3.0 y lo demás lo podemos dejar así, creo que no es necesario decir nada mas en este punto, lo demás es intuitivo, como por ejemplo escoger el tipo de dispositivo que queremos utilizar...

device: tipo de dispositivo

target:versión del dispositivo

cpu/abi: tipo de cpu(la que mas les convenga)

memori ram: ram para el dispositvo (recomendaria entre 250 y 500)

internal storage: la memoria interna del dispositivo(se puede dejar así)

sd card: memoria de la sd(recomendaría entre 1000 y 1500 MIB)




una vez escogido como lo queremos pulsamos ok y esperamos que se cree, después lo seleccionamos y le damos a start y se nos abrirá otra ventana en la que seleccionamos scale display to real size para seleccionar el tamaño de nuestra pantalla del dispositivo y ponemos en screen size 7 que es un buen tamaño y pulsamos oky esperamos que se inicie



una vez arrancado nos dirigiremos a nuestro navegador y nos pondremos a instalar sl4a de android poniendo en google sl4a accediendo a la direccion que pone en la imagen



una vez dentro nos descargamos el archivo sl4a_r6 para la instalación del programa



cuando se descargue lo instalamos y procedemos a descargar python para android poniendo en google python for android y accediendo al siguiente enlace



y descargamos el archivo llamado pythonforandroid_r5 y lo instalamos
una vez instalado accedemos a el programa python for android y pulsamos en browse modules y nos llevara a una pagina web donde descargaremos el archivo pytbluez y seguidamente volveremos a entrar en python for android y le daremos a import modules e importaremos este modulo descargado, después pulsaremos en la parte de arriba install





en la imagen pone unistall por que yo ya lo tengo instalado pero vosotros tendréis que darle a install.

una vez hecho todo esto crearemos en nuestro escritorio una carpeta y la llamaremos android o python for android... como queráis.

Descargamos el archivo python_extra_r14 en nuestro pc desde la pagina de andtes de python for android y lo extraemos, después accedemos a la carpeta idlelib y todo lo que contenga lo copiamos a la carpeta de nuestro escritorio android, no copiaremos la carpeta si no todo lo de dentro, lo seleccionamos todo, copiamos y pegamos en la carpeta del escritorio, también el archivo android.py de la carpeta anterior.

Despues nos vamos a C:/WINDOWS/system32 y buscamos el archivo llamado cmd.exe y le damos a enviar a escritorio(acceso directo)



Cuando este en el escritorio lo cortamos y lo pegamos en nuestra carpeta android, una vez dentro pulsamos en nuestro acceso directo cmd.exe y le damos botón derecho y propiedades y modificamos donde dice iniciar en y ponemos la ruta de nuestra carpeta copiando la ruta de donde dice dirección en nuestra carpeta pegándola donde dice iniciar en



Despues copiamos el archivo adb.exe y adbwinapi.dll de la carpeta de donde instalamos el sdk en C:\Android\platform-tools copiamos estos dos archivos y los pegamos en C:\WINDOWS\system32 



Ya lo tenemos todo preparado para empezar y abrimos nuestro sl4a en el emulador, una vez dentro de sl4a pulsamos en el botón menú y después en VIEW el la ventana que se abre abajo




Despues en interpreters, y volvemos a darle en el botón menú y pulsamos start server



y pulsamos private y accedemos a ver que dirección va a usar para comunicarse con el pc





Ahora nos dirigimos a la carpeta que creamos en nuestro escritorio y ejecutamos el cmd.exe y ejecutamos lo siguiente:

1-adb forward tcp:9999 tcp:(direccion dispositivo android)
2-set AP_PORT=9999
3-idle.bat



se nos abrirá el idle de python y le damos a file y new windows



y ya podemos empezar a escribir en nuestro idle de python y  ver los resultados en nuestro emulador, por ejemplo veamos el típico mensaje de hola mundo poniendo lo siguiente:

import android
droid = android.Android()
droid.makeToast("hola mundo")




 REFERENCIAS
  •  
  • http://hackloper.blogspot.com.es/2013/11/programacion-android-con-python.html 
  • http://www.xatakandroid.com/sistema-operativo/que-es-android

 


PROGRAMACIÓN GOOGLE APLICACIONES ENGINE CON PYTHON

Historia

Google App Engine o también conocido más comúnmente como GAE o App Engine nos abre la infraestructura de producción de Google de forma gratuita como plataforma de desarrollo y hospedaje de aplicaciones web.

El servicio fue lanzado el 7 de abril del 2008 como un servicio de cloud pero a diferencia de otros servicios en la nube como Amazon Web Services o Azure Services Platform de Microsoft, el servicio ofrecido por Google es un servicio de Plataforma como Servicio y no de Infraestructura como Servicio.
El uso de la infraestructura de servicio de Google App Engine es completamente gratuita hasta un Gigabyte de almacenamiento y cinco millones de visitas mensuales. Si superamos esos límites entonces tendremos que pagar por más recursos a Google a unos precios bastante asequibles. Además podemos usar un dominio propio para la URL de nuestra aplicación o bien podemos usar un subdominio de appspot.com ofrecido de manera gratuita por Google al estilo de Heroku.
Recomiendo encarecidamente echarle un ojo a la página de cuotas para ver bien como va el tema de los servicios gratuitos y tal porque eso de los cinco millones de visitas es cuanto menos un número muy subjetivo.

Características

GAE soporta de manera oficial los lenguajes de programación Python y Java de manera estable y en modo de beta testing en lenguaje de programación Go creado por ellos mismos. Al soportar Java, es posible además utilizar cualquier lenguaje JVM o lo que es lo mismo, cualquier lenguaje que pueda ejecutarse sobre una máquina virtual de Java, aunque eso si, con serias limitaciones. Entre dichos lenguajes se encuentran:
  • Groovy
  • JRuby
  • Scala
  • PHP
  • Clojure
  • Perl

En el siguiente enlace puedes encontrar un listado completo de implementaciones de diferentes lenguajes sobre JVM.
GAE soporta varios frameworks bajo Python como CherryPy, Pylons, Flask y Django 0.96 y 1.2. Además la misma Google ha desarrrollado un framework propio llamado —viva la originalidad que les caracteriza— webapp para aplicaciones web que van mejorando y actualizando. También existe un framework desarrollado específicamente para GAE y siguiendo —supuestamente— la filosofía de Django llamado GAE framework.
En cuanto a lo que respecta a Java, parece ser que es posible utilizar Grails de forma bastante sencilla y poco traumática utilizando para ello el Plugin para App Engine.

Restricciones

  • Las aplicaciones solo tienen permisos de lectura a los archivos del sistema de archivos. Para almacenar datos y archivos en modo lectura y escritura es necesario utilizar un sistema de archivos virtual sobre el DataStore.
  • Solo se puede ejecutar código a través de consultas HTTP
  • Las aplicaciones Java solo pueden usar el conjunto considerado seguro de clases del JRE estándar. ( Comprueba el Listado de clases)
  • Las aplicaciones no pueden crear nuevos hilos de ejecución
  • Los usuarios de Python pueden subir módulos para su uso en la plataforma pero no aquellos que están completamente desarrollados en C o Pyrex
  • El soporte para SSL solo está disponible par dominios *.appspot.com
  • Un proceso iniciado en el servicio para responder a una consulta no puede durar más de treinta segundos
  • No soporta sesiones persistentes, solo sesiones replicadas a las que además se les aplican ciertos límites.
  • No se pueden abrir sockets, por lo tanto, no se puede usar Twisted

El entorno de desarrollo

El SDK de Google App Engine viene con un entorno de desarrollo que puede ser ejecutado en local en nuestra máquina antes de subir los cambios a la nube y que simula completamente el entorno del App Engine. El SDK puede ser decargado de la página de descargas del proyecto.
Para ejecutar el servidor del entorno de desarrollo tan solo debemos ejecutar el script dev_appserver.py y como parámetro el path al directorio que contiene la aplicación. Por ejemplo en una consola de un sistema tipo UNIX:

genbeta@dev ~ $ python dev_appserver.py mi_app

El script dev_appserver.py admite numerosas opciones, mira la ayuda para verlas.

El entorno de ejecución de Python

App Engine ejecuta nuestras aplicaciones mediante un intérprete de Python 2.5.2 cargado en un entorno “sandboxed“. Toda aplicación programada para correr en la nube de Google debe incorporar un archivo de configuración llamado app.yaml donde se configuran diferentes aspectos de la aplicación y el entorno de ejecución.
El entorno de ejecución admite módulos de terceros programados íntegramente en Python y no deben incluir ninguna extensión C o cualquier otro código susceptible de ser compilado. El entorno incluye la librería estándar de Python a excepción de algunos módulos que han sido desactivados por seguridad como por ejemplo la escritura de disco o los sockets.
Otros módulos de Python han sido reemplazados o personalizados para hacerlos compatibles con App Engine. Un ejemplo de archivo de configuración app.yaml sería como el que sigue:
application: appdelaostia
version: 1
runtime: python
api_version: 1
handlers:
- url: .*
  script: appdelaostia.py
El tema del entorno de ejecución de Python es bastante complejo y se escapa de la intención de esta introducción a Google App Engine, así que te recomiendo que revises la documentación del proyecto si estás interesado/a en saber más sobre él.

 

Introducción

Google App Engine es un servicio gratuito que ofrece Google desde el año 2008 para la producción y alojamiento de aplicaciones Web en lenguaje Python.
Este producto ofrece la posibilidad de añadir otros desarrolladores a la producción de nuestra aplicación, el único requisito es que los "Developers" sean usuarios registrados de Google para acceder al marco colaborativo.
La infraestructura "hard" de Google se dispone en una red no centralizada de estaciones con servidores menores que alojan y corren las distribuciones de todas sus aplicaciones, ya sea el buscador, su correo Gmail, los servicios de vídeo, Docs...
Desde mediados del 2008, Google permite utilizar esta infraestructura de manera gratuita para alojar nuestras propias aplicaciones, con las limitaciones lógicas de cualquier producto gratuito que pueden ser consultadas a la hora de registrarse y acceder al servicio, suficientes para exigencias de desarrollo en entornos educativos.
La escalabilidad y seguridad de los datos y aplicaciones están garantizados, tanto por las copias de seguridad residentes en stores lejanos como por la migración de servicio ante cualquier incidente como si de una red eléctrica de suministro en malla se tratara.

Lenguajes

Por el momento, las aplicaciones deben usar el lenguaje Python, no se descarta que en un futuro cercano aumente la disponibilidad a otros lenguajes conocidos.
Python es un lenguaje interpretado creado a principios de los 90 por Guido van Rossum, en la actualidad en nómina de Google y que está detrás de las herramientas de software el App Engine. Dispone de sitio oficial, http://www.python.org/, donde se puede encontrar todo acerca de sus características, versiones, descargas, documentación... está en inglés, también hay información interesante en castellano buscando con "Don Google" como http://pyspanishdoc.sourceforge.net/ y otros.

Versión

Google App Engine se basa en la versión Python 2.5., con un runtime limitado por cuestiones lógicas de seguridad, descartando así módulos de acceso al sistema de ficheros de bases de datos y servidor, prohibe conexiones TCP, llamadas de bajo nivel al sistema operativo, etc.

Framework

Todo proyecto de software en Internet necesita soporte de programas, bibliotecas y un lenguaje interpretado, esto es lo que se conoce como framework, el más popular open source en aplicaciones bajo Python es Django, su sitio oficial es www.djangoproject.com/, también encontramos en castellano http://django.es/. En el enlace “Documentación” del Google App Engine aparecen instrucciones de como usar Django específicamente para este servicio.
Google aporta su propio framework, sencillo y completamente integrado en el App Engine, es el framework "appweb".
Además de las APIs (interfaces de programación de aplicaciones) generales que trae la versión 2.5 de Python, webapp framework aporta 6 APIs específicas valiosas y útiles que permiten registrar y autenticar usuarios, acceder a la base de datos, enviar correos electrónicos, establecer comunicación entre aplicaciones mediante http, gestionar la caché de memoria y manipular y procesar imágenes.
El SDK (Kit de desarrollo de software) que proporciona Google acompaña un servidor para pruebas en local que imita a los servidores reales para testear las aplicaciones creadas antes de subirlas al remoto.
Este SDK incluye las librerías de las APIs disponibles y descritas anteriormente, el servidor local de pruebas y otras aplicaciones de gestión.

Manual

Presentamos a continuación, los pasos para trabajar con Google App Engine, la instalación de las herramientas necesarias, así como la creación y alojamiento en la "Cloud Google" de nuestras aplicaciones, este "how to" se ha realizado sobre XP.
1.        Descarga de Python 2.5 desde http://python.org, sección download. Hacemos click sobre la 2.5.4. que aparece al final de la lista

 2.        Instalación de Python siguiendo las instrucciones del instalador.


 .        Descarga el SDK de Google App Engine desde http://code.google.com/appengine/downloads.html

 




4. Durante al instalación, aceptamos las condiciones de la licencia y se elegirá el directorio de instalación y se seleccionará la casilla "Add product path to user PATH".





       
5.        Verificación de la instalación del SDK lanzando el servidor de pruebas con una aplicación de ejemplo que viene incluida.
Buscamos a través de nuestro explorador de archivos la carpeta guestbook y seleccionamos y copiamos la ruta completa desde la raíz (por ej: c:appenginedemosguestbook), abrimos una sesión en línea de comandos y tecleamos: dev_appserver.py c:appenginedemosguestbook.







Con esta instrucción lanzamos el servidor con la aplicación contenida en la carpeta que pasa como parámetro. Puede haber diferencias en la ruta y carpeta que contiene la aplicación de ejemplo guestbook según la subversión 2.5. de Python descargada.
Puede ser interesante descender en la consola de comandos por el árbol del directorio a través de instrucciones CHDIR hasta la carpeta inmediatamente superior a guestbook e invocarla desde ahí.
Ten en cuenta que el ejemplo también puede venir en ruta samplesguestbook o similar, según el paquete Python descargado, por eso lo conveniente de buscarla.
Otro aspecto que es importante para que funcione el servidor de pruebas es que cada uno sustituya c:appengine por la ruta de instalación propia del SDK. Si todo ha ido bien aparecerá la ventana siguiente.
Abriendo el navegador contra la dirección http://localhost:8080/ podremos ver la aplicación guestbook.







Siempre que queramos podremos cerrar el servidor pulsando Control + C en la consola, si vemos que tarda un poco podemos actualizar el navegador para el retorno del cursor al display de comandos. Puedes escribir algo en la caja y darle al botón Sign Guestbook apareciendo lo escrito en otra respuesta del Servidor.



6.        Vamos a programar ahora nuestra primera aplicación HelloWorld, para ello creamos una carpeta llamada engine que cuelgue directamente de C:/



7.        Creamos ahora nuestro primer script en Python, abrimos bloc de notas o wordpad (Inicio, Accesorios y Bloc de Notas) y picamos el siguiente código (nota: lo que está entre paréntesis y en cursiva son comentarios aclaratorios que no deben escribirse):



print 'Content-Type: text/html' (lo que viene es texto/html para la respuesta http)
print '' (espacio)
print '<HTML>'
print '<BODY>'
print '<MARQUEE><H1>Hola Mundo, Hello World!!!!</H1></MARQUEE>' (imprime Hola Mundo y Hello World con formato H1 y en movimiento por la etiqueta marquee)
print '</BODY>'
print '</HTML>'


Lo guardamos como hola.py en la carpeta engine.
El método print escribe la cadena de texto en la salida standar por lo que al ejecutarse en un servidor web se genera la escritura de un documento respuesta a una petición http.



8.        Lo siguiente es decirle al servidor cuando debe ejecutar este script, para ello abrimos un nuevo documento en bloc de notas y escribimos lo siguiente:

application: engine (id de la aplicación)
version: 1 (versión de la aplicación)
runtime: python (de momento Google solo deja Python)
api_version: 1 (versión API utilizada)
handlers: (manejadores o lista de URls aceptadas por nuestra aplicación con sus correspondientes scripts asociados)
- url: /.*
script: hola.py



Guardamos como app.yaml en la carpeta engine. Este archivo actúa como descriptor de despliegue asociando URl's con sus correspondientes scripts, como el fichero web.xml en desarrollos Java EE. El formato yaml es un formato de serialización de datos multilenguaje que pretende ser más sencillo y legible que el XML, puedes ampliar información en http://www.yaml.org.
Abrimos la consola de comandos, arrancamos el servidor de prueba y cargamos nuestra aplicación escribiendo desde C:> lo siguiente:
dev_appserver.py engine
A continuación abrimos el servidor de pruebas con el navegador y obtenemos lo siguiente.



9.        Activación del servicio.
Si es la primera vez que subimos una aplicación a Google, tendremos que activar el servicio, para ello accedemos a http://appengine.google.com/start.
Nos autenticamos con el usuario y contraseña de Google al igual que hacemos con Gmail, Docs...
Si aún no tienes una cuenta puedes crearla dando al enlace desde la página de login.

Pulsamos sobre crear una aplicación y después deberemos verificar la cuenta mediante el envío por parte de Google de un código por SMS a nuestro móvil sin coste alguno.
Como España no aparece en la lista de distribución, deberemos seleccionar Other (Not Listed) y poner el prefijo 34 delante del número de nuestro móvil.
Hacemos click en Send y al poco rato recibiremos un mensaje de texto en nuestro móvil con el código a introducir en la verificación de nuestra cuenta. Este proceso de verificación sólo hay que hacerlo al crear la primera aplicación de nuestra cuenta.


 













Si la verificación es correcta se nos pedirá el identificador y el título de la aplicación que vamos a crear, esto es importante porque el identificador definirá la URL con la que los usuarios accederán a nuestra aplicación. En nuestro caso engine, y al comprobar la disponibilidad nos encontramos con que ya está “cogida”, optamos entonces por una ID más exótica como “ajalospajaros”, procedemos a cambiar el nombre de la carpeta de trabajo engine por ajalospajaros y en el fichero app.yaml modificamos la id de la aplicación sustituyendo también engine por ajalospajaros. Finalmente la URL de acceso de los usuarios será http://ajalospajaros.appspot.com..


Hay que tener en cuenta que si no queremos este dominio genérico appspot.com y disponemos de cuenta en Google Apps (no confundir con Google App Engine, ver artículo del Observatorio Tecnológico:http://observatorio.cnice.mec.es/modules.php?op=modload&name=News&file=article&sid=653), podremos asociar a nuestras aplicaciones los dominios que gestionemos con dicha cuenta, cambiando las DNS y los registros que se te indiquen desde Google en tu panel de administración del dominio que tengas.

10.     Subida de la aplicación.

Abrimos la consola y escribimos lo siguiente desde C>: appcfg.py update ajalospajaros
Accedemos a la aplicación creada desde  http://ajalospajaros.appspot.com

 

 REFERENCIAS
  • http://recursostic.educacion.es/observatorio/web/eu/internet/recursos-online/735-google-app-engine
  • http://www.genbetadev.com/programacion-en-la-nube/introduccion-a-google-app-engine


























































PROGRAMACIÓN WEB CON PYTHON

PROGRAMACIÓN WEB CON PYTHON

¿Cómo utilizar Python en la web?

Programación para la Web se ha convertido en un tema candente desde el surgimiento de la "Web 2.0", que se centra en el contenido generado por los usuarios en los sitios web. Siempre ha sido posible utilizar Python para la creación de sitios web, pero era una tarea bastante tediosa. Por lo tanto, muchos marcos y herramientas de ayuda se han creado para ayudar a los desarrolladores en la creación de sitios más rápidas y robustas. Este CÓMO describe algunos de los métodos utilizados para combinar Python con un servidor web para crear contenido dinámico

Django es un framework web de alto nivel...

Un framework web es un software que alivia el sufrimiento derivado de construir páginas web dinámicas. Abstrae problemas comunes al desarrollo web y proporciona atajos para tareas de programación frecuentes.
Para los lectores que han llegado tarde a la fiesta: un sitio web dinámico es uno en el que las páginas no son simplemente documentos HTML colocados en algún lugar del sistema de ficheros de un servidor. En cambio, en un sitio web dinámico, cada página la genera un programa de computador —una famosa "aplicación web"— que usted, el desarrollador web, crea. Por ejemplo, una aplicación web podría obtener registros de una base de datos o realizar alguna acción basándose en la entrada del usuario.
Un buen framework web resuelve los siguientes problemas:
  • Proporciona un método para hacer corresponder peticiones URL con el código que maneja las peticiones. En otras palabras, le otorga una manera de designar qué código se ejecutará para cada URL. Por ejemplo, se le podría decir al framework: "Para las URLs que se parezcan a /users/joe/, ejecuta el código que muestre el perfil del usuario con ese nombre de usuario".
  • Facilita mostrar, validar y volver a mostrar formularios HTML. Los formularios HTML son la principal manera de obtener datos de entrada de los usuarios web, así que más le vale a un framework web facilitar la representación de formularios y el manejo del código tedioso para mostrar y volver a mostrar formularios (resaltando los errores).
  • Convierte la entrada que envía el usuario en estructuras de datos que se pueden manipular cómodamente. Por ejemplo, el framework podría convertir los datos de un formulario HTML en tipos de datos nativos al lenguaje de programación que se esté utilizando.
  • Ayuda a separar el contenido de la presentación mediante un sistema de plantillas, de manera que se pueda cambiar el aspecto de un sitio web sin afectar al contenido, y viceversa.
  • Se integra cómodamente con las capas de almacenamiento —como las bases de datos— pero no exije estrictamente el uso de una base de datos.
  • Le permite trabajar más productivamente, a un nivel de abstracción mayor que si estuviera programando usando, digamos, HTTP. Pero no le prohíbe ir un nivel de astracción "hacia abajo" cuando sea necesario.
  • Se aparta de su camino, evitando llenarle la aplicación de manchas sucias, como URLs que contengan ".aspx" o ".php".
Django hace todas estas cosas bien; y presenta una serie de características que elevan el listón de lo que debería ser un framework web.
El framework está escrito en Python, un lenguaje de programación bonito, conciso, potente y de alto nivel. Para desarrollar un sitio utilizando Django hay que escribir código Python que utiliza las bibliotecas de Django. Aunque este libro no incluye un tutorial completo de Python, sí llama la atención sobre características y funcionalidades de Python cuando es procedente, especialmente cuando el código no tiene sentido de forma inmediata.

Usando el framework Django

Django es uno de los Frameworks de alto nivel que utiliza python para el desarrollo de aplicaciones de lato rendimiento. Primero generado por una aplicacion de noticias en línea.Django maneja plazos de codificacion intensivos y los exigentes requisitos de sus desarrolladores.Django es popular por usar un diselo limpio, rápido y pragmático.

Instalar Django

Ahora que ya tenemos python instalado podemos hacer lo mismo con django, en nuestro caso lo haremos con su versión 1.6.2, así que nos dirigimos a la web de django y descargamos el .tar llamado Django-1.6.2.tar.gz, y lo descomprimimos también en el mismo directorio donde está python, yo lo tengo como C:\Django. 

 

Configurar la base de datos

El único prerequisito de Django es una instalación funcionando de Python. Sin embargo el desarrollo de sitios web con soporte de base de datos, para esto necesitarás instalar un servidor de base de datos de algún tipo, para almacenar tus datos.
Si sólo quieres comenzar a jugar con Django, salta a la sección “Comenzar un proyecto” – pero créenos, querrás instalar una base de datos finalmente. Todos los ejemplos de este libro asumen que tienes una base de datos configurada.
Hasta el momento de escribir esto, Django admite tres motores de base de datos:
Se está trabajando para admitir Microsoft SQL Server y Oracle. El sitio web de Django siempre contendrá la última información acerca de las base de datos admitidas.
A nosotros el que más nos gusta es PostgreSQL, por razones que exceden el alcance de este libro, por eso lo mencionamos primero. Sin embargo, todos los motores que listamos aquí trabajan bien con Django.
SQLite merece especial atención como herramienta de desarrollo. Es un motor de base de datos extremadamente simple y no requiere ningún tipo de instalación y configuración del servidor. Es por lejos el más fácil de configurar si sólo quieres jugar con Django, y viene incluido en la biblioteca estándar de Python 2.5.
En Windows, obtener los drivers binarios de la base de datos es a veces un proceso complicado. Ya que sólo estás iniciándote con Django, recomendamos usar Python 2.5 y el soporte incluido para SQLite. La compilación de drivers puede ser estresante.


Usar Django sin una base de datos

Como mencionamos anteriormente, Django actualmente no requiere una base de datos. Si sólo quieres usar este como un servidor dinámico de páginas que no use una base de datos, está perfectamente bien. Con esto dicho, ten en cuenta que algunas de las herramientas extras de Django requieren una base de datos, por lo tanto si eliges no usar una base de datos, perderás estas utilidades.

Comenzar un proyecto

Un proyecto es una colección de configuraciones para una instancia de Django, incluyendo configuración de base de datos, opciones específicas de Django y configuraciones específicas de aplicaciones.
Si esta es la primera vez que usas Django, tendrás que tener cuidado de algunas configuraciones iniciales. Crea un nuevo directorio para empezar a trabajar, por ejemplo algo como /home/username/djcode/, e ingresa a este directorio.

El servidor de desarrollo

Django incluye un servidor web ligero que puedes usar mientras estás desarrollando tu sitio. Incluimos este servidor para que puedas desarrollar tu sitio rápidamente, sin tener que lidiar con configuraciones de servidores web de producción (i.e., Apache) hasta que estés listo para la producción. Este servidor de desarrollo vigila tu código a la espera de cambios y se reinicia automáticamente, ayudándote a hacer algunos cambios rápidos en tu proyecto sin necesidad de reiniciar nada.
Entra en el directorio mysite, si aún no lo has hecho, y ejecuta el comando python manage.py runserver 

Tu Primera aplicación Django

Aprendamos a base de ejemplos.

 Esta aplicación constirá en dos partes:
  • Un sitio público que permitirá a la gente ver encuestas y votar en ellas.
  • Un sitio de administración que permitirá añadir, cambiar o eliminar encuestas.
Asumiremos que ya has instalado Django. Esto se puede verificar ejecutando el intérprete interactivo de Python y tecleando import django. Si ese comando se ejecuta exitosamente, sin errores, entonces Django está instalado.

Creando un proyecto

Si ésta es tu primera vez usando Django, tendrás que hacerte cargo de una configuración inicial. Esto es, necesitarás auto-generar código que define un proyecto Django -- un conjunto de configuraciones para una instancia de Django, incluyendo configuración de base de datos, opciones específicas de Django y detalles propios de tu aplicación.
Desde la línea de comandos, utiliza cd para cambiar de directorio a aquel donde quieras almacenar el código, luego ejecuta el comando django-admin.py startproject mysite. Esto creará un directorio mysite en el directorio actual.

El servidor de desarrollo

Verifiquemos que lo anterior ha funcionado. Entra al directorio mysite y ejecuta el comando python manage.py runserver. Verás la siguiente salida en la línea de comandos:
Validating models...
0 errors found.
Django version 1.0, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Acabas de arrancar el servidor de desarrollo de Django, un servidor web liviano escrito completamente en Python. Lo hemos incluido en Django para que puedas desarrollar de manera rápida, sin tener que vértelas con la configuración de un servidor de producción -- como Apache -- hasta que estés listo para producción.
Este es un buen momento para que recuerdes: NO uses este servidor en nada que se parezca a un entorno de producción. Su objetivo es ser usado sólo para desarrollo. (Estamos en el negocio del desarrollo de frameworks web, no de servidores web).
Ahora que el servidor está andando, visita http://127.0.0.1:8000/ usando un navegador web. Verás una página "Welcome to Django", en un agradable tono azul claro. ¡Funcionó!



Configuración de la base de datos

Ahora, edita settings.py. Es un módulo Python normal con variables a nivel de módulo que representan configuraciones de Django. Modifica los siguientes valores en el elemento 'default' de DATABASES para que coincida con la configuración de tu base de datos.
  • ENGINE -- Ya sea 'django.db.backends.postgresql_psycopg2', 'django.db.backends.mysql' o 'django.db.backends.sqlite3'. Otros backends también están disponibles.
  • NAME -- El nombre de tu base de datos. Si estás usando SQLite la base de datos será un archivo en tu ordenador; en tal caso, NAME debería ser la ruta absoluta, incluyendo nombre de archivo, de dicho archivo. Si el archivo no existe se creará automáticamente cuando sincronices la base de datos por primera vez (ver abajo).

    Cuando especifiques la ruta, siempre utiliza barras hacia la derecha / incluso en Windows (por ejemplo: C:/homes/user/mysite/sqlite3.db).
  • USER -- El usuario de la base de datos (no usado en SQLite).
  • PASSWORD -- La contraseña de la base de datos (no usado en SQLite).
  • HOST -- La máquina donde está ubicada la base de datos. Déjalo como una cadena vacía si la base de datos está en la misma máquina física (no usado en SQLite).
Si las bases de datos son algo nuevo para ti te recomendamos usar simplemente SQLite (poniendo en ENGINE 'django.db.backends.sqlite3'). SQLite viene incluido como parte de Python 2.5 y superior, así que no tendrás que instalar nada.

Creando los modelos

Ahora que el entorno -- un "proyecto" -- está creado, estás en condiciones de comenzar con algo real.
Cada aplicación que codificas en Django consiste de un paquete Python, en algún lugar de tu ruta de búsqueda, que sigue cierta convención. Django viene con una utilidad que genera automáticamente la estructura de directorios básica de una aplicación, de forma que te puedas enfocar en escribir código en vez de estar creando directorios.
Para crear tus aplicaciones, asegúrate de estar en el directorio mysite e introduce este comando:
python manage.py startapp polls
Esto creará un directorio polls, que contiene la siguiente estructura:
polls/
    __init__.py
    models.py
    tests.py
    views.py
 En nuestro sistema de encuestas, crearemos dos modelos: polls (encuestas) y choices (opciones). Una encuesta contiene una pregunta y una fecha de publicación. Una opción tiene dos campos: el texto de la opción y un contador. Cada opción está asociada a una encuesta.
Estos conceptos se representan por un par de clases Python. Edita el archivo polls/models.py para que contenga algo como:
from django.db import models

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()
El código es directo. Cada modelo está representado por una subclase de django.db.models.Model. Cada modelo tiene algunas variables de clase, que representan campos en la base de datos.
Cada campo está representado por una instancia de una clase models.Field -- por ejemplo, models.CharField para carácteres y models.DateTimeField para datetimes. De esta forma se le dice a Django qué tipo de datos contiene cada campo.


Proyectos vs. aplicaciones

¿Cuál es la diferencia entre un proyecto y una aplicación? Una aplicación es una aplicación web que hace algo -- por ejemplo, una bitácora, un registro de datos públicos o un sistema de encuestas. Un proyecto es un conjunto de aplicaciones configuradas para un sitio web particular. Un proyecto puede contener múltiples aplicaciones. Una aplicación puede pertenecer a múltiples proyectos.
En este tutorial crearemos nuestra aplicación para encuestas en el directorio mysite por simplicidad. Como consecuecia de esto, la aplicación estará acoplada con el proyecto -- o sea, el código Python en la aplicación de encuestas, va a acceder a mysite.polls. Luego en este tutorial, discutiremos la forma de desacoplar las aplicaciones para distribuirlas.
Para crear tus aplicaciones, asegúrate de estar en el directorio mysite e introduce este comando:
python manage.py startapp polls
Esto creará un directorio polls, que contiene la siguiente estructura:
polls/
    __init__.py
    models.py
    tests.py
    views.py
Esta estructura de directorios contendrá la aplicación de encuestas.
El primer paso para codificar una aplicación web en Django es definir tus modelos -- esencialmente, la estructura de la base de datos, con metadatos adicionales.


Activando modelos

Con sólo la porción de código de modelo mostrada, Django obtiene mucha información. Por ejemplo, ahora Django es capaz de:
  • Crear un esquema de base de datos (las sentencias CREATE TABLE) para esta aplicación.
  • Crear una API de acceso a datos en Python para acceder a los objetos Poll y Choice.
Pero primero necesitamos decirle a nuestro modelo que la aplicación polls está instalada.

Jugando con la API

Ahora, usemos el intérprete interactivo de Python para jugar con la API que Django ofrece. Para invocar el intérprete, usa este comando:
python manage.py shell
Usamos este comando en vez de teclear simplemente "python", debido a que manage.py configura el entorno del proyecto por nosotros. "Configurar el entorno" implica dos cosas:
  • Agregar mysite a sys.path. Por flexibilidad, varias partes de Django se refieren a los proyectos en notación con puntos (por ejemplo 'mysite.poll.models'). Para que esto funcione, el paquete mysite debe estar en sys.path.
Ya hemos visto un ejemplo de esto.

 

Referencias
http://django.es/docs/intro/tutorial01/
https://www.video2brain.com/mx/cursos/desarrollo-web-con-django
http://django-book.mkaufmann.com.ar/chapter02.html

 

 

 

 

 

 

 

 

 

 

 

PROGRAMACIÓN GUI EN PYTHON CON TKINTER

PROGRAMACIÓN GUI EN PYTHON CON TKINTER

Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible .

¿Qué es un GUI?  

 
GUI son las siglas de interfaz gráfica de usuario. Son herramientas para crear interfaces gráficas, esto es, componentes gráficos con los cuales el usuario interacciona con la aplicación. Hay algunos IDE's que contienen GUI's integrados.

TkInter (de TK Interface) 

Es un módulo que nos permite construir interfaces gráficas de usuario multiplataforma en Python utilizando el conocido toolkit Tk. Python incluye este módulo por defecto, lo que hace que sea un tookit muy popular. TkInter, además, es robusto, maduro y muy sencillo de aprender y de utilizar, contando con una amplia documentación. Por otro lado hasta la versión 8.5 Tk era famoso por lo poco atractivo de sus widgets (cosa que se podía solucionar hasta cierto punto gracias a Tile). No es hasta esta versión que contamos con cosas tan básicas como textos con antialiasing en X11 o widgets como Treeview. En esta versión también se incluye Tile por defecto, por lo que contamos con un mejor aspecto general para todas las plataformas. Sin embargo Python no se distribuye con Tk 8.5 hasta la versión 2.6, por lo que, para versiones de Python anteriores, es necesario recompilar TkInter para Tk 8.5 por nuestra cuenta, o bien usar Tile si no necesitamos ninguna de las nuevas características. Es más, para poder usar la mayor parte de las nuevas características de Tk 8.5 es necesario instalar una librería que actúe como wrapper de Ttk (el nombre con el que han dado en llamar al conjunto de los nuevos widgets y temas de Tk), como puede ser pyttk. TkInter se distribuye bajo la PSFL (Python Software Foundation License) una licencia compatible con la GPL creada para la distribución de software relacionado con el proyecto Python. La PSFL carece de la naturaleza viral de la GPL, por lo que permite crear trabajos derivados sin que estos se conviertan necesariamente en software libre. Por último, veamos una pequeña aplicación de ejemplo escrita con TkInter, sin uso de eventos y con solo unos pocos widgets, que nos servirá para comparar el aspecto de los distintos toolkits.

Primeros Pasos con TKinter:

Una librería de python especializada en interfaces gráficas( gui) 

Requisitos:
Antes de comenzar con la práctica tienes que tener preparado estos puntos:
  • Python( 2.7 en adelante), (obligatoria)
  • Pycharm( herramienta editor para python gratuita) opcional, puedes trabajar desde la consola de python tambien.
Pasos:
  • Instalar Python:
Descargar el instalador de python para window de esta url: https://www.python.org/downloads/
  • Descargar PyCharm: https://www.jetbrains.com/pycharm/download/, puedes descargar la versión free o trial
  •  Crear nuevo proyecto en PyCharm.
Eecutar el programa pyCharm y dirigirse al menú de opciones y clic en File -> New Proyecto

http://janorodriguez.com/wp-content/uploads/2015/02/newproyectopycharm.png


Le damos un nombre a nuestro archivo con extensión .py en Location y nos aparecera una ventana como la que sigue:
paneltrabajo

Si no se desea trabajar con PyCharm, puedes trabajar desde la consola de python que viene por defecto.

COMENZANDO A PROGRAMAR

  • Agregamos las siguientes lineas de código en el archivo creado
La funcionalidad indica que se tiene que importar la librería tkinter,
Tk es una clase que recibe multiples parametros, en este caso no recibirá ninguno.
Title es la propiedad que indicará el titulo del formulario.
Geometry indicará el ancho x el alto del formulario.
Mainloop es el encargado de manejar y manipular todos los eventos que ocurran durante el codigo.
Luego, para ejecutar la aplicación dirigirse a la barra de menus en la opción Run -> Run.

holamundoAGREGANDO CONTROLES WINDOWS AL FORMULARIO PYTHON


Considerar ahora que toda clase de Tkinter, debe tener un “parent”, y se indica en el argumento “parent” del constructor de la clase a implementar.
Entonces a partir de ahora cada control que utilizemos siempre tendrá que enviarse un elemento padre como parámetro.

Control Label

Ahora, agregaremos un elemento label cuyo código es:
donde:
fg: es el color del label.
bg: “es el color de fondo del label”
window: es el formulario padre donde el label se posicionará
text: es el texto que tendrá el elemento label.
pack: es la forma de posicionamiento que este tendrá el label, puede utilizarse tambien grid, Si no existiera ninguno de los 2 se crearía el control label pero no habría forma de mostrarlo en su elemento padre.
Ejecutamos la aplicación y tendrá que salirnos algo como est.
label


CONTROL BUTTON


El siguiente código lo que hará es mostrar un botón con el texto “Pulsar”, el método que se invoca al momento de pulsar el botón se llama mostrar, esto lo vemos en la variable command que se envia como parámetro,
La novedad aquí es el uso del método “grid” que lo que hace es posicionar el elemento al igual que pack() con la diferencia que el primero posiciona en una fila y columna determinada.
El ejemplo se verá como sigue:
button

Control Text:

El siguiente código lo que hará es mostrar un botón y una caja de texto, al presionar al botón lo que se hará es agregar un elemento label en el formulario en la fila 3 y columna 1.
La novedad aquí es que ahora trataremos de obtener el valor de la caja de texto para luego poder imprimirlo.
Para esto tendríamos que crear una variable del tipo StringVar si es que es una cadena.
Luego, en la clase Entry el parámetro que se encargará de almacenar el valor ingresado en al caja de texto es “textvariable” al que tendrá que enviarse la variable creada.
Para obtenerla utilizamos el método get.
Veamos un ejemplo en funcionamiento:
texto

Control CheckBox

Creamos otro archivo y agregamos el siguiente código:
La novedad aquí es el uso del método “grid” que lo que hace es posicionar el elemento al igual que pack() con la diferencia que el primero posiciona en una fila y columna determinada.
Veamos un ejemplo de cómo quedaría nuestro formulario:
checkbox