Creación de aplicaciones de escritorio en Linux, con Python y Glade

Desde que me cambié completamente a Ubuntu en el PC de la casa, extrañaba un programa al que no le encontré un sustituto: un programa para trozar archivos binarios. Con Windows usaba un programa freeware llamado Hacha.

Durante Diciembre me empeñé en hacer una versión para Linux de este programa, que creo que está lo suficientemente madura para entregarla a Uds. como regalo de Navidad :-)

¿Por qué Python?

Podría haberla hecho en Java, pero sería muy pretencioso para un programa tan pequeño, y para tener el look nativo del escritorio en Ubuntu tendría que haberlo hecho con bindings para Java... muy complicado.

Lejos, la combinación de tecnologías más atractiva para hacerlo era usar Python con GTK y Glade. Python viene con todas las distribuciones Linux modernas y creo que es el lenguaje más atractivo para aprender hoy por hoy. Además, en Ubuntu se tiene Python, GTK y Glade como parte de la instalación base. De hecho, el actualizador de paquetes (update-manager) está hecho con ellos.

Para diseñar la interfaz de usuario de nuestra aplicación usamos Glade, que tiene una apariencia más o menos similar a otros entornos para desarrollar aplicaciones de escritorio como Delphi o Visual Basic. Con Glade, la definición de las pantallas de nuestra aplicación queda contenida en un gran archivo XML que cargamos desde el programa principal escrito en Python.

Les recomiendo la experiencia a todos quienes usen Ubuntu hoy y que hayan usado Visual Basic en el pasado. Con Glade se tiene la facilidad y rapidez en el diseño, pero con un lenguaje de verdad.

Otras cosas interesantes que vienen de casi de fábrica son la internacionalización (para que usarios de otras partes del mundo puedan usar el software en su idioma y unidades nativas). Con poco esfuerzo, se generan los archivos con los textos a traducir, de forma consistente y con una detección que funciona sin problemas.

¿Qué hace el programa?

El programa te permite tomar un archivo grande y cortarlo en trozos más pequeños, que puedes enviar a otro equipo y volver a reconstruir el programa original. Puedes indicar el tamaño de los trozos, y si quieres generar un archivo de verificación para comprobar que un archivo reconstruido es igual al original.

¿Cómo lo instalo?

Por ahora, no he creado un repositorio compatible con Debian, ni lo he empaquetado, así que las alternativas más sencillas son dos:

Para usuarios novatos de Ubuntu

1.-Bajar el archivo gtkfilesplitter_0.1.1-0ubuntu1_i386.deb desde la página de descargas del proyecto en Google Code. Guardarlo en el escritorio u otra carpeta.

2.- Hacer doble-click al archivo, para instalarlo. Seleccionar "Instalar el paquete" y usar la contraseña de administrador del equipo.

3.- Listo. Ahora puedes utilizar el programa ejecutando "gtkfilesplitter" en un terminal (Aplicaciones > Accesorios > GtkFileSplitter).

Para usuarios expertos y desarrolladores

En este caso, lo mejor es hacer checkout del proyecto desde el repositorio Subversion.

1.- Si no tienes instalado Subversion, apt-get install subversion
2.- Para hacer checkout del proyecto con:

svn checkout http://gtkfilesplitter.googlecode.com/svn/trunk/ gtkfilesplitter

3.- Ejecutar en un terminal: python gtkfilesplitter.py

Ojo: El código es de una calidad bastante pobre y poco Pythonic, así que se aceptan sugerencias.

Enlaces recomendados para aprender

1.- Curso completo de Python y GTK en español

2.- Tutoriales de Glade en Bulma

Sin votos aún

Comentarios

Foto de Alguien Que No Quiere Dar Su Nombre

Hola, no se si es el sitio

Hola, no se si es el sitio apropiado para esta cuestión. Pero es la siguiente: he intentado aprender javascript para realizar gadgets de vista en concreto he intentado implementar una agenda. Es para un proyecto y me gustaria orientarlo a python ya que he oido que es posible crear gadgets con este lenguaje que he tocado un poco en clase. Me podrias orientar un poco??? como creo la interfaz gráfica, nose estoy un poco perdido. Un saludo !

auto insurance quotes

Foto de Alguien Que No Quiere Dar Su Nombre

replica watches

Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and replica watches I hope you post again soon.

Foto de BIGDaniel

gadgets python

Hola, no se si es el sitio apropiado para esta cuestión. Pero es la siguiente: he intentado aprender javascript para realizar gadgets de vista en concreto he intentado implementar una agenda. Es para un proyecto y me gustaria orientarlo a python ya que he oido que es posible crear gadgets con este lenguaje que he tocado un poco en clase. Me podrias orientar un poco??? como creo la interfaz gráfica, nose estoy un poco perdido. Un saludo !

Foto de Gustavo_sieg

Desarrollo con Python

Hola tengo que hacer un proyecto tipo seminario con python me gustaria que tiren algunas ideas de lo que podria hacer con, gtk,glade o alguna recomendacion de lo que podria desarrollar con este lenguaje estoy habierto a cualquiera idea .
Gracias

Foto de Pedro Luis

Una pregunta...

Saludos amigos...

Soy nuevo en el mundo linux, y estoy haciendo pruebas con ubuntu para hacer unas aplicaciones sencillas de escritorio, y llegue a este blogs por medio del sr. Google...

Que herramientas recomiendan para desarrollas aplicaciones sencillas de escritorio que usen bases de datos??? Deseo hacer un sistema pequeño, algo como una agenda, o un control de citas, para presentar en la universidad.

Muchas Gracias...

Pedro Luis

Foto de Denis

Usa Glom

Hola,

Puedes crear una aplicación usando este enfoque y utilizar bibliotecas de funciones para conectarte a diferentes bases de datos (SQLite, MySQL, etc.), pero quizás te interese usar un software llamado Glom (www.glom.org) que parece ser más sencillo todavía.

Saludos,

Denis

Saludos,

—Denis
California roll connoisseur

Foto de armando ramirez

ayuda

saludos... estoy nuevo en linux... tengo unos archivos cortados con hacha (creo... la extension es .000, .001 y asi susecivamente), que prodria hacer para unirlos en ubuntu?... agradecere cualquier ayuda

Foto de ikkaro

exelente

muy buena herramienta, se te agradece, siempre es util un programa como estos, y mas cuando aun usas dikette :P, (si yo lo uso)

Foto de Esteban De Leon Naranjo

Muy Bueno

Es muy bueno el articulo lo agregare a favorito

Foto de Caremono

wxWidgets ?? why not ?

Hola, me parecio interesante tu articulo ya que estoy en un proyecto con python y siempre me ha gustado la construcción de GUI's en delphi, sin embargo no tengo experiencia con otras tecnologías cross platform y leyendo por ahi me pareció que lo más multiplataforma que existe son las wxWidgets.
Asi es que me pregunto ¿Tuviste algun motivo especial por el que escogiste Gtk ??

Saludos y gracias de antemano por la respuesta.

Foto de Fox

Muy bueno

Está muy bien Denis, de hecho he aprendido tu forma de hacer interfaces dinamicas (el ocultar la caja que no deberia de verse :P), yo basandome en mi experiencia con python te diría que es código muy pythonico, pero si opinaria algo:

Si estás usando en modulo "sys" solo para salir del programa, podrías mirar esto:

try:
import gtk
import gtk.glade
except:
sys.exit(1)

pones:

except:
raise SystemExit()

Así no tienes que cargar sys para nada y hace la misma funcion. Puedes colocar un string como argumento para mostrar mensaje ;)

Nada más :P

Un saludo.

Foto de Fox

Muy bueno

Está muy bien Denis, de hecho he aprendido tu forma de hacer interfaces dinamicas (el ocultar la caja que no deberia de verse :P), yo basandome en mi experiencia con python te diría que es código muy pythonico, pero si opinaria algo:

Si estás usando en modulo "sys" solo para salir del programa, podrías mirar esto:

try:
import gtk
import gtk.glade
except:
sys.exit(1)

pones:

except:
raise SystemExit()

Así no tienes que cargar sys para nada y hace la misma funcion. Puedes colocar un string como argumento para mostrar mensaje ;)

Nada más :P

Un saludo.

Foto de hipogea

Me interesa Phyton

De un tiempo a esta parte me interesado mucho en el mundo de software libre, lo veo más robusto y confiable. Dentro de todo este universo, me atrae aún mas el desarrollo de aplicaciones de escritorio. Favor de enviarme links o recursos para dar mis primeros pasos en este largo camino.

Saludos de un apasionado del sosftware libre.

Foto de jenriquez

Bonito artículo, yo estoy

Bonito artículo, yo estoy tratando de entrarle a wxWidgets pero se me está atragantando (soy electrónico, no informático :P). Desde hace algún tiempo he visto Python y la verdad es que se me antoja, pero lo checaré más tarde pues estoy decidido a no dejarme vencer por C++ y toda su "truquería" ;).

Pregunta: ¿piensas hacer el programa compatible con Hacha? Por allí hay un par de aplicaciones de código abierto para unir archivos de Hacha.

Foto de Denis

No es compatible con Hacha

No, no fue hecho compatible con Hacha. Al parecer, Hacha incrusta el código de verificación del archivo (checksum) dentro de los trozos de archivo que generas. En mi programa, el código de verificación es opcional y se graba en un archivo por separado (archivo.md5).

Una gracia del programa es que de esta forma, los trozos los puedes unir simplemente concatenando los archivos. En Linux/Unix puedes hacerlo con "cat" y en Windows con "copy /b"

Saludos,

—Denis
California roll connoisseur

Foto de Rodrigo (ZaR)

Genial, lo pondre en mi sitio

Estimado, me parece una idea genial tu programa... me has solucinado unna gran controversia...

Voy a nombrar este post en mi sitio www.vivelinux.cl, si no deseas que sea asi, por favor enviame un mail a zar@vivelinux.cl y lo sacare....

Foto de Alvaro

Genial!

Hace tiempo que le estoy echando una mirada a python para desarrollo de aplicaciones graficas.... Una consulta, el algortimo en si lo implementaste tu? o es una interfaz de split?


Alvaro Graves - agraves [at] dcc punto uchile punto cl
MSN: no_mas_zpam [@]correocaliente punto com
Seconds Out, Genesis Tribute

Foto de Denis

Es un wrapper

Hola,

No, no es una interfaz gráfica sobre split, porque no recordaba que podía trozar archivos binarios (alguna vez lo usé, pero solo podías trozar indicando el número de líneas en un archivo de texto).

El algoritmo para trozar (es super simple) lo tomé de esta receta en los foros de ActiveState. El autor aparece en los créditos de mi programa.

Saludos,

—Denis
California roll connoisseur

Enviar un comentario

El contenido de este campo se mantiene como privado y no se muestra públicamente.
  • HTML permitido: <a> <em> <strong> <pre> <ul> <ol> <li> <img> <blockquote> <br> <div> <h2> <h3> <hr> <object> <embed>
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.

Más información sobre opciones de formato