[Python-es] Dudas al usar GTK en Linux y WxPython en Windows para una aplicación

manuelcortez manuelcortez00 en gmail.com
Mar Dic 3 16:13:43 CET 2013


Hola,

Para una aplicación que planeo correr en dos tipos de SO (Win32 y
GNU/Linux) necesito utilizar diferentes librerías para interfaces
gráficas. Por cuestiones de Accesibilidad, bajo Linux debería usar GTK+3
y en Windows WxPython. MI pregunta es si puedo hacer esto con un mismo
código fuente, es decir, si en el mismo programa podría hacer que se
tomara una u otra librería sin afectar al rendimiento del mismo.

En un principio pensé en hacer algo así:

Crear un módulo llamado GUI, que dentro contenga una carpeta por cada
SO, o sea dos directorios, win32 y linux. Poner el __init__.py en cada
uno de esos directorios, e importar todo lo que necesito que puedan
importar otras partes de la aplicación. Luego, fuera de esos
directorios, en el directorio GUI, hacer el __init__.py, con algo como esto:

# -*- coding: utf-8 -*-
import sys

if sys.platform == "win32":
from win32 import *
elif sys.platform == "linux2":
from linux import *

Y así ir haciendo con cada SO que necesite.

Las preguntas:

1. ¿Hay alguna forma mejor de hacer esto? Solo se necesitarían librerías
gráficas diferentes, todo lo demás funcionará bien en ambas plataformas.
2. En el archivo que ejecuta la aplicación, se inicializa el MainLoop de
Wx para Windows o el GTK si se usa en Linux. Uso if's como en los
módulos para determinar la plataforma. Si el import de wx o GTK está
dentro del bloque de código del IF, supongo que no se importará si la
condición no es cierta. ¿Es mejor separar el código y hacer un archivo
para inicializar la app en Windows y otro para Linux?
3. En el setup.py, por ahora no he encontrado forma de hacer que como
dependencia se tenga GTK o WX si se tiene según qué plataforma, debería
volver a probar con IF? o hay instrucciones en setuptools para usar
según qué herramientas para diferentes OS.

Muchas gracias por la respuesta, saludos!

-- 
Cordialmente:

Manuel Cortéz

Blog: http://manuel.a12x.net

V Semestre
Universidad  de Monterrey (Prepa UDEM) 

Cita:
“Free software, free society”
Manuel Cortéz

“La libertad no es poder elegir entre unas pocas opciones impuestas, sino tener el control de tu propia vida. La libertad no es elegir quien será tu amo, es no tener amo.”
Richard Stallman


------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 260 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/python-es/attachments/20131203/123a2d6a/attachment.sig>


Más información sobre la lista de distribución Python-es