Skip to content

Posts from the ‘Python’ Category

10
jun

Picapy en Launchpad

Antes de que me lie y os cuente un rollo de mucho cuidado, a lo importante, ya se puede instalar Picapy-0.6 directamente desde Launchpad en Ubuntu Lucid Lynx, para esto simplemente teneis que ejecutar las siguientes líneas:

sudo -v
sudo add-apt-repository ppa:lorenzo-carbonell/atareao
sudo apt-get update
sudo apt-get install picapy

Con esto ya tienes instalado Picapy. Espero que lo disfrutes tanto como yo. Para ejecutarlo, simplemente en el menu principal de Ubuntu:

Menú_016Ahora el rollo:

Sigue leyendo…Read more

Popularity: 8% [?]

6
jun

Nueva versión de Picapy

Bueno, después de todo el fin de semana dale que te pego, creo que ha merecido la pena. Picapy ya parece algo. Picapy es una aplicación realizada en Python para trabajar directamente desde el escritorio con Picasa Web.
Esta aplicación permite las tareas básicas, como son crear y borrar carpetas, y añadir y eliminar fotos. Además permite obtener información básica tanto de fotos como de imágenes.
Esta herramienta está pensada para aquellos que tenemos una página web y nuestras fotos están hospedadas en Picasa, de esta manera toda la gestión se hace realmente sencilla.

Picapy_001

Sigue leyendo…Read more

Popularity: 9% [?]

6
jun

Que boton pulso y como

Estoy mejorando considerablemente Picapy, y me ha surgido un problemilla que en otros lenguajes o editor es muy sencillo de resolver, y aquí he tenido que hacer algunas consultas para resolverlo, y es, cuando pulsamos un botón del ratón, ¿Cómo sabemos que botón hemos pulsado?, y la segunda pregunta relacionada es, ¿Cuantas veces lo hemos pulsado?

Sigue leyendo…Read more

Popularity: 7% [?]

10
may

Picapy

Menudo lío. No tenía claro si ponerlo en la sección de Programación en la categoría de Python, o en la sección de Ubuntu. Esta es una nueva aplicación que estoy implementando dirigida a Ubuntu (ciertamente no tengo ni idea si funcionará en Windows, si alguien tiene instalado Python en Windows, y lo quiere probar, espero que me cuente la experiencia, lo agradeceré).

Como de constumbre, no estaba nada contento con utilizar Picasa para subir las fotos a Picasa Web, me parecía innecesario tener que trabajar en Wine para poder hacer toda esta operación. Así que ni corto ni perezoso, me he puesto manos a la obra, y he empezado con una nueva aplicación que espero sea el deleite de todos aquellos que tenemos una página web y nuestras imágenes están alojadas (no me salía la palabra) en Picasa Web.

Sigue leyendo…Read more

Popularity: 7% [?]

24
abr

Hacer un huevo con Python

Lo normal sería “no hacer ni el huevo”, pero no esto lo que pretendo con este artículo. Los huevos en Python (Python eggs) son módulos de Python empaquetados con información a cerca de le los módulos de los que depende, la versión, y otros datos parecidos.

Los huevos, se almacenan en un repositorio central donde se pueden descargar esos módulos. Este repositorio se llama Cheese Shop.

Para construir un huevo se utiliza el módulo “setuptools” pero antes es necesario crear un fichero “setup.py” con la información necesaria de nuestro paquete. Primeramente es necesario organizar el directorio de donde cuelga nuestro paquete. Para ello es necesario crear un archivo __init__.py, en el interior del directorio principal.

Superior a este directorio, se encuentra setup.py:

somedir/

setup.py

hello/

__init__.py

hello.py

Así es como tiene que quedar nuestra distribución de archivos. Ahora tenemos que preparar setup.py:


import ez_setupez_setup.use_setuptools()

from setuptools import setup, find_packages

VERSION=`1.0`

DESCRIPTION=`Whatever`

LONG_DESCRIPTION=`Whatever`

CLASSIFIERS = filter(None, map(str.strip,"""Intended Audience :: DevelopersProgramming Language :: PythonTopic :: Internet :: WWW/HTTP""".splitlines()))

setup( name="whatever", version=VERSION, description=DESCRIPTION, long_description=LONG_DESCRIPTION, license="GPL", classifiers=CLASSIFIERS, author="yo", author_email="yo@email.com, url="http://www.atareao.es", packages =[`package`], entry_points="""[]  """, scripts = [`ez_setup.py`], platforms=[`any`], install_requires="simplejson"

<span style="font-size: small;">)</span>

Entre estos parámetros, podemos destacar los siguientes:

-packages: con él indicaremos la lista de paquetes que distribuiremos en este huevo. En general, será una lista de directorios del código fuente del huevo,

-entry_points: habrá que poner especial atención a este parámetro. Mediante él indicaremos qué modulos podrá importar un programador de nuestro paquete,

-scripts: listado de scripts que irán adjuntos al paquete. Notese que el script “ez_setup.py” es utilizado en nuestro “setup.py” por lo que es interesante asegurarnos de que quien instala nuestro huevo, cuenta con este módulo,

-install_requires: con él se indican los módulos (incluso las versiones de ellos) de los que depende nuestro huevo.

Para construir el huevo bastará con ejecutar el script “setup.py” con los parámetros adecuados:

</p>
<p style="margin-right: 0px; margin-left: 0px; padding: 0px;">python setup.py bdist_egg</p>
<p style="margin-right: 0px; margin-left: 0px; padding: 0px;">

De esta manera ya está construido el nuevo huevo. Ahora se puede subir a la tienda de los quesos.

Popularity: 7% [?]

24
abr

Tui un acortador para Ubuntu

Ultimamente me he aficionado sobre manera a la programación en Python, y desde que descubrí lo increiblemente sencillo que es hacer pequeñas (pronto me pondré con las grandes) aplicaciones, no pasa ni un minuto que no esté pensado que aplicación hacer.

Todo ésto unido al desarrollo de esta página, me ha llevado a desarrollar una pequeña aplicación en Python pensando claramente en Ubuntu, y es un acortador de direcciones web, para su utilización en conjunto con Twitter y otras páginas de microbloging que ahora están tan de moda.

Sigue leyendo…Read more

Popularity: 7% [?]

21
abr

Python, Glade y Gtkbuilder (05)

Estamos llegando al final de esta serie de artículos, creo que este será el penúltimo, si no me equivoco y no añado alguna utilidad mas al final. En fin, a lo que iba, he añadido dos interesantes características a la aplicación.

La primera para centrar la ventana en la pantalla. Hasta ahora, la ventana principal aparecía donde le venía en gana. Con estas líneas aparece justo en el centro de la ventana:

{codecitation class=”brush: python;” width=”500px”}

def center_on_screen(self):

width=gtk.gdk.screen_width()
height=gtk.gdk.screen_height()
window_width=self.window.get_size()[0]
window_height=self.window.get_size()[1]
self.window.move((width-window_width)/2,(height-window_height)/2)

[/bash]

Donde self.window es la ventana en cuestión claro.

La segunda característica añadida es guardar las preferencias en un archivo “ini”, de manera que cuando ejecutemos la aplicación vaya inmediatamente al sitio:


class Ini:
<p style="padding-left: 30px;">def __init__(self,inifile):</p>
<p style="padding-left: 60px;">self.inifile=inifile
self.magnitud=0
self.de=0
self.a=0
if os.path.exists(inifile)==False:</p>
<p style="padding-left: 90px;">self.write()</p>
<p style="padding-left: 30px;">def read(self):</p>
<p style="padding-left: 60px;">ini=ConfigParser.ConfigParser()
ini.read(self.inifile)
self.magnitud=ini.get(`Defecto`,`Magnitud`)
self.de=ini.get(`Defecto`,`De`)
self.a=ini.get(`Defecto`,`A`)</p>
<p style="padding-left: 30px;">def write(self):</p>
<p style="padding-left: 60px;">ini=ConfigParser.ConfigParser()
ini.read(self.inifile)
if not ini.has_section(`Defecto`):
ini.add_section(`Defecto`)
ini.set(`Defecto`,`Magnitud`,self.magnitud)
ini.set(`Defecto`,`De`,self.de)
ini.set(`Defecto`,`A`,self.a)
with open(self.inifile,`wb`) as writefile:</p>
<p style="padding-left: 90px;">ini.write(writefile)</p>
<p style="padding-left: 30px;">def get_magnitud(self):</p>
<p style="padding-left: 60px;">return self.magnitud</p>
<p style="padding-left: 30px;">def get_de(self):</p>
<p style="padding-left: 60px;">return self.de</p>
<p style="padding-left: 30px;">def get_a(self):</p>
<p style="padding-left: 60px;">return self.a</p>
<p style="padding-left: 30px;">def set_magnitud(self,magnitud):</p>
<p style="padding-left: 60px;">self.magnitud=magnitud</p>
<p style="padding-left: 30px;">def set_de(self,de):</p>
<p style="padding-left: 60px;">self.de=de</p>
<p style="padding-left: 30px;">def set_a(self,a):</p>
<p style="padding-left: 60px;">self.a=a</p>

En el próximo artículo nos queda añadir un icono y publicar la aplicación y finito. No se como hacerlo para que sea pública para todos los usuarios de linux, pues es una herramienta sencilla y muy rápida de utilizar. Investigaré a ver.

Popularity: 7% [?]

15
abr

Python, Glade y Gtkbuilder (04)

En el artículo anterior habíamos generado la interfaz gráfica a utilizar con la aplicación y en ella habíamos definido las señales o eventos que se tenían que controlar. Ahora se trata de definir en Python estas señales. En caso de no hacerlo, al correr la aplicación simplemente nos da un aviso de que la señal no está definida.

Sigue leyendo…Read more

Popularity: 8% [?]

10
abr

Python, Glade y Gtkbuilder (03)

    La siguiente operación consiste en definir la ventana principal de la aplicación, para ello utilizamos Glade:

    Thumbnail image

    Sigue leyendo…Read more

    Popularity: 8% [?]

    7
    abr

    Python, Glade y Gtkbuilder (02)

    Continuando con la serie de artículos para hacer Equival en Python, y antes de ponernos a diseñar la interfaz gráfica con Glade, es necesario tener claro como vamos a almacenar los datos. En principio, y como hice con Equival, los voy a guardar en una base de datos. En este caso la base de datos será de Sqlite. La razón de la elección radica en que esta base de datos está soportada en Linux, y en el caso de Ubuntu, se puede instalar muy fácilmente desde los repositorios. Además, está el tema del Wrapper. Y aquí es donde está el meollo de la cuestión.

    Hace unos meses encontré un wrapper increible para Python y que tenía soporte para las principales bases de datos, MySQL, PostgreSQL, Firebird, SQLite y otras.

    El Wrapper en cuestión es SQLObject, y es increiblemente sencillo de utilizar. Por ejemplo, en nuestro caso, para definir nuestras dos principales clases “unidad” y “magnitud” simplemente tenemos que implementar el siguietne código:

    {codecitation class=”brush: python;” width=”500px”}

    class Magnitud(sqlobject.SQLObject):

    nombre = sqlobject.StringCol(unique=True)

    nota = sqlobject.StringCol()
    unidades = MultipleJoin(`Unidad`)

     

    class Unidad(sqlobject.SQLObject):

    nombre = sqlobject.StringCol(unique=True)

    simbolo = sqlobject.StringCol()

    factor = sqlobject.FloatCol()

    formula = sqlobject.StringCol()

    derivada = sqlobject.BoolCol()

    nota = sqlobject.StringCol()

    magnitud = ForeignKey(`Magnitud`,cascade=True)

    [/bash]

    con estas pocas líneas ya tenemos nuestro wrapper, para envolver a Unidad y Magnitud.Hay que destacar que aquí ya tenemos relacionadas ambas tablas, utilizando:

    {codecitation class=”brush: python;” width=”500px”}

    magnitud = ForeignKey(`Magnitud`,cascade=True)

    [/bash]

    Pero no queda ahí la cosa, se puede definir directamente las tablas para que las implemente en la base de datos:

    {codecitation class=”brush: python;” width=”500px”}

    db_filename = os.path.abspath(`equival.sqlite`)
    if os.path.exists(db_filename):

    os.unlink(db_filename)

    connection_string = `sqlite:`+db_filename
    connection = connectionForURI(connection_string)
    sqlhub.processConnection = connection
    # Con estas dos líneas creamos las tablas
    Magnitud.createTable()
    Unidad.createTable()

    [/bash]

    Esto directamente nos genera las tablas sql en la base de datos “equival.sqlite”

    {codecitation class=”brush: sql;” width=”500px”}

    CREATE TABLE magnitud (
    id INTEGER PRIMARY KEY,
    nombre TEXT UNIQUE,
    nota TEXT
    )

    CREATE TABLE unidad (
    id INTEGER PRIMARY KEY,
    nombre TEXT UNIQUE,
    simbolo TEXT,
    factor FLOAT,
    formula TEXT,
    derivada BOOLEAN,
    nota TEXT,
    magnitud_id INT CONSTRAINT magnitud_id_exists REFERENCES magnitud(id) ON DELETE CASCADE
    )

    [/bash]

    Y por último para listar todas las unidades y magnitudes:

    {codecitation class=”brush: python;” width=”500px”}

    magnitudes=Magnitud.select(Magnitud.q.id>0)

    for magnitud in magnitudes:

    print magnitud.nombre

    unidades=Unidad.select(Unidad.q.id>0)

    for unidad in unidades:

    print unidad.nombre

    [/bash]

    Sencillo ¿no? Ya tenemos el primer pasa hacia EquivalPy

    Popularity: 8% [?]

    Bad Behavior has blocked 2493 access attempts in the last 7 days.

    Easy AdSense by Unreal