Entradas

Crear una agenda en Python - Tercera parte (juntando todo)

Imagen
En este tercer post vamos a encajar todas las piezas para terminar de crear nuestra fantástica agenda personal, escrita en Python, que utiliza XML para manejo de datos, y por encima el framework de wxPython. ¡Qué mas se puede pedir! Evidentemente la aplicación, tal como va a quedarse, puede ser mejorada, y darle sobretodo mucha más funcionalidad, como permitir envío de correo (registro de direcciones, etc.), dividir los días en horas, implementación de alarmas, etc. Recapitulando, tenemos: 1) Un diseño gráfico completo, realizado en wxGlade . 2) Un diseño del modelo de datos que está bajo el diseño gráfico, cómo se gestiona la información, cómo se guarda, las herramientas de acceso, independiente del diseño que va por encima. El tercer paso consiste, mediante la programación de manejadores de eventos, el relacionar los posibles eventos que se dan en el diseño gráfico con la funcionalidad que queremos que tenga para nuestro modelo de datos. Para ello vamos a crear un tercer módulo, llam...

Python - Unicode

Imagen
Unicode es un sistema para representar caracteres de todos los diferentes idiomas del mundo. Cuando Python analiza un documento XML, todos los datos se almacenan en memoria como Unicode. Antes de Unicode había diferentes sistemas de codificación de caracteres para cada idioma, cada uno usando los mismos números (0-255) para representar los caracteres de ese lenguaje. El problema radicaba cuando se quería intercambiar documentos entre sistemas heterogéneos, restultando difícil, puesto que no había manera de que un ordenador supiera con certeza qué esquema de codificación de caracteres había usado el autor del documentom y los números pueden significar muchas cosas (en japonés el carácter codificado 234 no es el mismo que el carácter codificado ruso 234, ni en español, que 234 es Û). Para resolver este problema Unicode representa cada carácter como un número de 2 bytes (de 0 a 65535). Cada número de 2 bytes representa un único carácter utilizado en al menos un idioma del mundo (los carac...

XML y Python - Operaciones básicas y II

Acceso a atributos en árbol DOM Como antes, para acceder a atributos de elementos, el primer paso es analizar el documento XML utilizando la función minidom.parse(nombre_fichero) para crear el objeto árbol DOM. Utilizamos el atributo childNodes para navegar a través del árbol DOM. from xml.dom import minidom xml_documento = minidom.parse("c:\\python\\agenda.xml") nodos = xml_documento.childNodes Ahora tenemos una lista de los nodos hijos de la raíz del árbol. Solo falta determinar mediante la función hasAttribute(nombre_atributo) si el objeto nodo tiene (devuelve True) ó no tiene (devuelve False) el atributo nombre_atributo. Si el nodo tiene el atributo especificado, se puede recuperar la información de dicho atributo mediante la función getAttribute(nombre_atributo). lista = nodos[0].getElementsByTagName("codigo_referencia") for nodo in lista: if nodo.hasAttribute("fecha"): print nodo.getAttribute("fecha") Creación de árbol DOM Para poder crear ...

XML y Python - Operaciones básicas I

Imagen
XML, las tecnologías relacionadas, y los lenguajes de marcado basados en XML son la base para el intercambio de datos entre aplicaciones, multilenguaje y multiplataforma en las aplicaciones modernas. Python admite completamente el lenguaje XML. La biblioteca estándar Python proporciona el paquete xml, que nos permite utilizar la tecnología XML fundamental de manera muy sencilla. Hay paquetes de terceros, como PyXML que amplían el paquete xml, introduciendo implementaciones de DOM, XPath ó XLST. Hay otro paquete de terceros, llamado 4Suite, que proporciona más analizadores XML para áreas de aplicación específicas, además de XLink y XPointer. Una alternativa Python para el procesamiento XML es Element Tree, cuya funcionalidad, en parte, se incluye en Python 2.5, en el módulo xml.etree. Para los usuarios que quieran ver en profundidad el tema de Python y XML, sax y DOM, sus diferencias y virtudes, y sus formas de acceso particulares, recomiendo, en primer lugar Google , fuente de toda sab...

Crear una agenda en Python - Segunda parte (funcionamiento)

En este post vamos a seguir en la encrucijada de crear una agenda personal en lenguaje Python, utilizando para ello la interfaz gráfica que nos proporciona el framework wxPython. Puesto que ya hemos creado el diseño, ahora vamos a diseñar el funcionamiento, completamente independientemente del diseño. Esta es una buena opción, ya que si algún día quisiéramos cambiar la interfaz, en principio, no debería tener nada que ver con cómo se guardan datos y se recuperan. Bien, como de lo que se trata es de crear una agenda personal, lo primero que hay que ver, es ¿qué es una agenda para mí? ¿qué debe hacer como funcionamiento mínimo (tampoco es cuestión de desarrollar aquí un Mozilla Sunbird )? La respuesta a esta pregunta se resume a continuación: 1) Una agenda consta de entradas, que se identifican de manera unívoca. 2) A cada entrada yo le podré agregar un texto, de manera que a partir del identificador de entrada (el cual es unívoco) yo pueda acceder a la información que he introducido co...

Crear una agenda en Python - Primera parte (diseño)

Imagen
Vamos a crear una agenda de escritorio con Python y el framework de desarrollo gráfico wxPython. Este desarrollo lo vamos a hacer en varias fases. en este post detalla la primera, el diseño gráfico de la ventana que contendrá nuestra agenda. Para ello vamos a utilizar wxGlade, un diseñador (que no un IDE) de widgets para wxPython. La apariencia quedará mas menos parecida a la imagen que se presenta. Vemos que se trata de un frame al que le hemos variado la configuracion por defecto (no aparecen los botones de minimizar y maximizar). Dentro del frame hemos incluido un objeto contenedor, BoxSizer, de 2 espacios en horizontal. En el espacio de arriba se incluye el calendario, y en el de abajo una caja de texto multilínea, en donde anotaremos las notas que queramos para ese día.Hay que tener claro que en este primer post vamos a diseñar la pantalla. El cómo se van a guardar las notas por día, en qué sistema (que serán ficheros XML), la programación de los eventos, manejador de eventos, dó...

Programa de loterías en Python

Imagen
A continuación os presento un programa muy sencillo, escrito en Python, para la generación aleatoria de combinaciones para juegos de azar. Lo he probado en Windows, así que en Linux no creo que haya problemas. He utilizado el módulo random para crear los números pseudoaleatorios. Hay varias formas de hacerlo. Yo he utilizado el método uniform, que da entre el rango que especifiquemos un número real. Como se verá en el código lo que he hecho ha sido un casting con int(), para quedarme con la parte entera, que es la que me interesa. Por supuesto el código tiene muchas mejoras, pero lo importante es ver el funcionamiento, y sobretodo lo sencillo que es programar en Python. Si he escrito esta noche este programa es porque es Viernes, no me ha tocado el Euromillones. # Progama para generar secuencias de loterías. # Escrito por Ángel Luis García García en Python 2.5.4 import random, os def combinacion(num_ele, total_num, repetir = False, ordenar_resultado = True): elementos = [] if num_el...