[Python-es] Orientación para el desarrollo de aplicaciones de escritorio

39 views
Skip to first unread message

Jesús Quintero Suárez

unread,
Jan 12, 2016, 10:36:13 AM1/12/16
to La lista de python en castellano

Hola todos, he leído de todo un poco pero realmente no es suficiente como para elegir la combinación de paquetes más adecuada, quiero desarrollar si es posible con una de las versiones más recientes de python y con la base de datos postgresql.

¿Cuál es ORM el más adecuado?

¿Para GUIs que me recomiendan, y si es posible una herramienta RAD?

 

Agradezco la colaboración que me puedan brindar, gracias.

 

 

Kiko

unread,
Jan 12, 2016, 10:49:51 AM1/12/16
to La lista de python en castellano
Approach clásico:
  - ORM: SQLAlchemy
  - GUI/RAD: PyQT/QtDesigner

Aunque depende para qué iría con bootstrap+flask+sqlalchemy
  - Look & Feel sería similar en las diferentes plataformas.
  - no hay problemas de compilar las librerías gráficas, que puede ser un poco doloroso en algún caso y algún SO.
  - Gran parte del desarrollo te vale para tener una app online, si es necesario.
  - Aprendes desarrollo web :-P
  -  ...

Saludos.
 

 


_______________________________________________
Python-es mailing list
Pyth...@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Jesús Quintero Suárez

unread,
Jan 12, 2016, 12:40:09 PM1/12/16
to La lista de python en castellano

Kiko, si entiendo bien, con flask puedo desarrollar aplicaciones que corren como de escritorio!, como sería eso?.

Kiko

unread,
Jan 12, 2016, 1:26:05 PM1/12/16
to La lista de python en castellano
El 12 de enero de 2016, 18:38, Jesús Quintero Suárez <jesu...@msn.com> escribió:

Kiko, si entiendo bien, con flask puedo desarrollar aplicaciones que corren como de escritorio!, como sería eso?.


Con flask puedes crer una aplicación web que puedes embeber dentro de un QWebView (PyQT), por ejemplo.

O, directamente, puedes correrlo en un navegador y no depender de PyQT, Wx, GTK/PyGObject,... Dependerás de otras cosas.

Pero es solo una sugerencia. Depende de lo que necesites hacer.

Un ejemplo mínimo de lo primero copiado/adaptado de aquí (http://codereview.stackexchange.com/a/114307):

#Testedo en Python3.5

import sys

from PyQt4.QtCore import QThread, QUrl
from PyQt4.QtGui import QApplication
from PyQt4.QtWebKit import QWebView
from flask import Flask

PORT = 5000
ROOT_URL = 'http://localhost:{}'.format(PORT)


class FlaskThread(QThread):
    def __init__(self, application):
        QThread.__init__(self)
        self.application = application

    def __del__(self):
        self.wait()

    def run(self):
        self.application.run(port=PORT)


def provide_GUI_for(application):
    qtapp = QApplication(sys.argv)

    webapp = FlaskThread(application)
    webapp.start()

    qtapp.aboutToQuit.connect(webapp.terminate)

    webview = QWebView()
    webview.load(QUrl(ROOT_URL))
    webview.show()

    return qtapp.exec_()


if __name__ == '__main__':
    app = Flask(__name__)

    @app.route('/')
    def index():
        return "Hola Mundo!!"
   
    sys.exit(provide_GUI_for(app))

Mario Lacunza

unread,
Jan 12, 2016, 1:31:15 PM1/12/16
to La lista de python en castellano
Para mi:

ORM: SQL Alchemy
Widgets: wxPython q x licencia te permite cerrar tu código y venderlo.
wxFormBuilder: para diseñar las GUI y además te genera el código base.
Powerarchitect: para modelar tu BD PG
Codedesigner RAD: si te gusta modelar en UML primero tu sistema esta tool te crea el codigo basado en los mismos.
Para escribir código pues Eclipse+pydev  y su excelente debugguer o Sublime text2 o la nueva versión del viejo Boa Constructor.


Saludos / Best regards

Mario Lacunza
Email:: mlac...@gmail.com
Personal Website:: http://www.lacunza.biz/
Hosting:: http://mlv-host.com/
Mascotas Perdidas:: http://mascotas-perdidas.com/
Skype: mlacunzav

Lima - Peru

Mario Lacunza

unread,
Jan 12, 2016, 1:33:58 PM1/12/16
to La lista de python en castellano
Creo q pidió app de escritorio y no web...xq para el caso también puede usar Django.

Saludos / Best regards

Mario Lacunza
Email:: mlac...@gmail.com
Personal Website:: http://www.lacunza.biz/
Hosting:: http://mlv-host.com/
Mascotas Perdidas:: http://mascotas-perdidas.com/
Skype: mlacunzav

Lima - Peru

Nekmo

unread,
Jan 12, 2016, 2:12:24 PM1/12/16
to La lista de python en castellano
No he probado Kivy, pero tiene buena pinta.

https://kivy.org/

Un cordial saludo:
-- Nekmo.

Sitio web: http://nekmo.com
Dirección de contacto: cont...@nekmo.com
XMPP/Jabber: cont...@nekmo.com
Google+: Nekmo Com

Nicolas lino

unread,
Jan 12, 2016, 2:13:07 PM1/12/16
to La lista de python en castellano
Kivy++

Kiko

unread,
Jan 12, 2016, 2:25:28 PM1/12/16
to La lista de python en castellano
BTW, si es una aplicación de escritorio porqué irías con postgresql y
no con algo más simple con sqlite?

El 12/1/16, Nicolas lino <nicola...@gmail.com> escribió:

Mario Lacunza

unread,
Jan 12, 2016, 2:29:01 PM1/12/16
to La lista de python en castellano
Pues escoger el motor de base de datos no tiene nada q ver con q sea desktop o web, sino va en función de la cantidad de información q tiene q almacenar, si va montada en red y permite múltiples usuarios (sqlite no) y accesos con concultas recurrentes, punteros, inserciones y un largo ETC..

Saludos / Best regards

Mario Lacunza
Email:: mlac...@gmail.com
Personal Website:: http://www.lacunza.biz/
Hosting:: http://mlv-host.com/
Mascotas Perdidas:: http://mascotas-perdidas.com/
Skype: mlacunzav

Lima - Peru

Nekmo

unread,
Jan 12, 2016, 2:38:45 PM1/12/16
to La lista de python en castellano
Yo para una aplicación de escritorio usando tecnología web, no
utilizaría Django por diversos motivos:

1º. Porque Django es bastante grande.
2º. Porque donde destaca es en lado del servidor, y una aplicación de
este tipo requerirá sobre todo de lógica en el lado del cliente.
3º. Django está pensado para correr tras un servidor web como Nginx, y
aunque es posible usar un servidor web en Python, le estás añadiendo
una mayor complicación.
4º. En Django se trabaja por proyectos, siendo un proyecto una web.
Ello dificulta su distribución como aplicación de escritorio.

Y ojo, no lo digo porque no me guste Django. Lo utilizo todos los días
y me dedico profesionalmente a ello. Sólo digo que Django, aunque
puede utilizarse para correr una aplicación destinada a cliente de
escritorio, no es lo más óptimo ni cómodo, porque no fue diseñado para
ello. En su lugar, recomendaría Flask u otro miniframework parecido.

Un cordial saludo:
-- Nekmo.

Sitio web: http://nekmo.com
Dirección de contacto: cont...@nekmo.com
XMPP/Jabber: cont...@nekmo.com
Google+: Nekmo Com


Mario Lacunza

unread,
Jan 12, 2016, 2:53:29 PM1/12/16
to La lista de python en castellano
Disculpa y como haces una app "web de escritorio" sin una parte servidor donde corra (php, python, java o el lenguaje servidor usado) toda la lógica basado ya sea en LAMP o Nginx?

Xq tener parte de la lógica del cliente en el desktop pues rompe el concepto de app web donde todo reside en el servidor, por eso sólo se necesita un browser para usarla sin tener q instalar NADA del lado cliente, creo q andan confundidos con los conceptos centrales y el cómo desplegar la app.

Saludos / Best regards

Mario Lacunza
Email:: mlac...@gmail.com
Personal Website:: http://www.lacunza.biz/
Hosting:: http://mlv-host.com/
Mascotas Perdidas:: http://mascotas-perdidas.com/
Skype: mlacunzav

Lima - Peru

Nekmo

unread,
Jan 12, 2016, 3:02:18 PM1/12/16
to La lista de python en castellano
Flask puede servir el proyecto con los archivos estáticos incluidos, y
además está preparado para múltiples peticiones (multithread). Es un
servidor web Python a fin y al cabo. No es tan óptimo como correrlo
con un gunicorn + nginx/lighttpd/loquesea para los estáticos pero, ¿y
qué más da? Sólo tienes un único usuario.

Con Django necesitas obligatoriamente otro servidor que lo sirva
usando WSGI u otra tecnología. El servidor incluido para pruebas
(runserver) está demasiado limitado.

Un cordial saludo:
-- Nekmo.

Sitio web: http://nekmo.com
Dirección de contacto: cont...@nekmo.com
XMPP/Jabber: cont...@nekmo.com
Google+: Nekmo Com


Mario Lacunza

unread,
Jan 12, 2016, 3:17:15 PM1/12/16
to La lista de python en castellano

La verdad lo q recomiendas es un Frankenstein de solución nada óptima donde tu mismo lo aceptas.

Y recomendé django xq se lo q es una app web.

Enviado desde mi LG G3

Mario R. Osorio

unread,
Jan 12, 2016, 5:31:14 PM1/12/16
to La lista de python en castellano

 @Mario Lacunza

Mario,
Con el debido respeto, cuando dices que 

 
"La verdad lo q recomiendas es un Frankenstein de solución"

Me haces pensar que  quizás vivas en otro mundo. 

La tendencia hoy día es hacer TODAS las aplicaciones para la web. Esto ofrece, entre muchas otras, la ventaja de que cualquier usuario con un navegador la puede utilizar.
Por supuesto, en el otro lado tiene que haber al menos un servidor web y otro de bases de datos, pero como explico alguien anteriormente, existen varios servidores web y sistemas de bases de datos relacionales, no relacionales, sql, nosql; que puedes escoger, según la carga que tu aplicación va a tener. Existen opciones para todo y lo mejpr es que tanto los servidores web como de bases de datos de hoy día pueden convivir prácticamente en cualquier computador de los que se fabrican hoy día absolutamente sin ningún problema.

Incluso, aun si la aplicación es mono usuario, hacerla web te da la ventaja de la posibilidad de escalarla y adaptarla a cualquier necesidad.

Por otro lado, estamos hablando de python. Tu puedes usar cualquier combinación de tecnologías y lenguajes de programación, etc. que quieras pero, aunque también lo puedes usar en tu aplicación, NO NECESITAS PHP.


Dtb/Gby
=======s 
Mario R. Osorio
A.S. of Computer Programming and Analysis

“If I had asked people what they wanted, they would have said faster horses.”
 ― Henry Ford

            

      

Jesús Quintero Suárez

unread,
Jan 12, 2016, 5:42:25 PM1/12/16
to La lista de python en castellano
Hola todos, gracias por responder.
Creo que me falto un poco de contexto, se trata de varias aplicaciones,
accedidas simultáneamente por múltiples usuarios, (no excede los 40), se
deben instalar en el servidores de archivos de cada uno de mis clientes
todos con Windows.
Estas aplicaciones ya existen, las desarrolle en Visual FoxPro con su base
de datos nativa, y tienen una característica especial, lo hecho, hecho está,
es algo así como una factura que una vez emitida no deben cambiar aún si
cambia la información de donde se obtuvieron los datos para generarla, para
lograrlo utilizo la incrustación en vez relaciones con vigencia, pues esta
última es mucho más compleja de programar y a largo plazo termino con mayor
redundancia.
Creo que una base de datos orientada a documentos, (MongoDb), me vendría
bien, pero con las características NoRel de postgresql me alcanza, y además
obtengo la parte relacional.
También estuve estudiando la posibilidad de desarrollo web, en especial con
Django, pero son demasiado los temas para resolver ya que nunca he
desarrollado para web, (HTML5, CSS3, JavaScript, Jquery, Ajax, servidores
web en hosting y en local), y si a esto le sumo que no se inglés,
prácticamente estoy muerto.

Mario Lacunza

unread,
Jan 12, 2016, 6:51:25 PM1/12/16
to La lista de python en castellano
Vivo en el mismo mundo q tu, y no todo se debe o puede hacerse en web ya q todo depende de los requerimientos para modelar una solución ofimática. En este caso el amigo sólo pidió "aplicación de escritorio" sin más. Por eso muchos entendemos una app tradicional no web, claro q ahora el modelo web también es posible como mencionan.

Sin embargo al amigo q le contesté x su solución en la q el mismo se contradice sobre su eficiencia y modelado, agregando mas librerías a cada respuesta (lo cual sabemos q significa) no era algo óptimo.

Y recuerda q no TODO es web sino sistemas como SAP y un largo etc no existirían y M$ (léase Microsoft) no seguiría dando soporte a lenguajes de programación que puedan crear sistemas desktop tradicionales y sus librerías de controles, dlls, etc.

Y en el mundo donde vivimos no todos pueden comprarse un CoreI7 + 16GB de RAM con lo último, tengo muchos q aun tienen PCs viejas Core2Duo y una de ellas funge de servidor de datos y creo q es la realidad de muchos países.

Escalabilidad: eso depende de COMO diseñes tu sistema y nada más.

En web es mejor la instalación de upgrades ya q no tienes q ir de cliente en cliente instalando los exe, deb o bin nuevos, sólo haces el deploy en el server y listo.

Al final la solución que se ofrezca se dará según requerimientos y con lo q tenga el user de fierro, lo q recomendé es lo más sencillo de instalar y usar para una app desktop tradicional, punto el resto son gustos y sobre eso no han escrito los autores.

Saludos / Best regards

Mario Lacunza
Email:: mlac...@gmail.com
Personal Website:: http://www.lacunza.biz/
Hosting:: http://mlv-host.com/
Mascotas Perdidas:: http://mascotas-perdidas.com/
Skype: mlacunzav

Lima - Peru

Mario Lacunza

unread,
Jan 12, 2016, 7:01:44 PM1/12/16
to La lista de python en castellano
Jesús

ahora está mas claro, yo tengo varias de esas viejas Apps hechas con fox migradas (la lógica no código) a Python sin problemas.

He hecho varios sistemas como el tuyo y no veo la necesidad de usar una BD no relacional, todo es tema como tu app acceda a la info, permisos y diseño.

Con 40 tendrás q dividir tu lógica y hacer cliente/servidor.

No te salvas de migrar el diseño de la BD a Postgresql y hacer ciertas mejoras ya q el motor te permite hacer muchas cosas q antes hacías a mano en fox.

Lo q hago yo es dejar el viejo sistema como histórico y el nuevo corre desde una fecha determinada de corte de operaciones, inicio de mes es mejor. Si te quieres pulir puedes acceder a los datos de las bd fox en modo consulta desde el sistema en python en modo consulta y hacer ciertas funciones de importación de datos, así tus users harán este pesado trabajo bajo demanda.

Saludos / Best regards

Mario Lacunza
Email:: mlac...@gmail.com
Personal Website:: http://www.lacunza.biz/
Hosting:: http://mlv-host.com/
Mascotas Perdidas:: http://mascotas-perdidas.com/
Skype: mlacunzav

Lima - Peru

Nekmo

unread,
Jan 12, 2016, 7:12:11 PM1/12/16
to La lista de python en castellano
 @Mario Lacunza, Flask consume muy poquitos recursos, como 8-12MiB de RAM, y aunque modesto, su servidor web se porta realmente bien si no hablamos de grandes cantidades de usuarios.

Si hablamos de desarrollar para un solo usuario, al ser una "aplicación de escritorio", te sirve y te sobra.

¿En qué casos he usado yo Flask para propósitos como este?
1. Un daemon en Python que requiere una interfaz de configuración. Al tener una interfaz web, permite su fácil configuración desde otra máquina.
2. Una aplicación de servidor que, al no poder contar con interfaz GUI convencional, se ha desarrollado vía web.

Son casos sencillos y que no requieren de algo grande, ni van a atender muchas peticiones. Prefiero evitarme los problemas de una configuración compleja si puedo tenerlo todo en uno. Y en el caso de una aplicación de escritorio, es básico su facilidad de distribución.

En ocasiones nos empeñamos en matar moscas a cañonazos, cuando una solución así es mucho más simple, fácil de desarrollar, mantener, instalar, y no requiere de múltiples servicios corriendo (Gunicorn + Nginx + ...).


Un cordial saludo:
-- Nekmo.

Sitio web: http://nekmo.com
Dirección de contacto: cont...@nekmo.com
XMPP/Jabber: cont...@nekmo.com
Google+: Nekmo Com

Mario Lacunza

unread,
Jan 12, 2016, 7:31:35 PM1/12/16
to La lista de python en castellano
Ya leiste los requerimientos q ha puesto el amigo Jesus? aún piensas q tu idea es buena?

Antes q existieran las apps web estuvieron las desktop puras y aún siguen y su distribución no es mucho problema, 2 o 3 installers (y luego 1) tipo click click q tanto les gustan a los users windows y listo.

Leyendo los requerimientos de Jesús insisto q tu solución no es adecuada.

Saludos / Best regards

Mario Lacunza
Email:: mlac...@gmail.com
Personal Website:: http://www.lacunza.biz/
Hosting:: http://mlv-host.com/
Mascotas Perdidas:: http://mascotas-perdidas.com/
Skype: mlacunzav

Lima - Peru

Nekmo

unread,
Jan 12, 2016, 7:46:06 PM1/12/16
to La lista de python en castellano
De hacerlo yo, lo haría con Qt, Wx, o probaría Kivy, el cual ya propuse antes.

Y no, no digo que utilizar Flask sea lo ideal, pero con la poca información inicial, podría haber sido una opción tan digna como cualquier otra. Aquí todo el mundo ha propuesto soluciones con la mejor de las intenciones, y con la información que había, si el compañero hubiese tenido conocimientos de desarrollo web, habría sido una buena opción.


Un cordial saludo:
-- Nekmo.

Sitio web: http://nekmo.com
Dirección de contacto: cont...@nekmo.com
XMPP/Jabber: cont...@nekmo.com
Google+: Nekmo Com

Fernando Villarroel via Python-es

unread,
Jan 12, 2016, 9:48:10 PM1/12/16
to La lista de python en castellano, Fernando Villarroel
Hola Jesús.

La programación web te obliga a tener cierto dominio de js, css, HTML, etc.
Pero quizás sea la ocasión de perder el miedo y atreverte, no creo que mueras en el intento.

Por ahí te hablaron de Flask, genial no es complicado y muy potente, ideal para desarrollo de API.

También te hablaron de Django, si su curva de aprendizaje es algo más pronunciada, pero te garantizo que si aprendes Flask  entonces Django irá de una.

Yo te quería hablar de Web2py es muy simple y si quieres aprender de Web es ideal, de verdad te sorprenderá, te lo recomiendo. Insisto también dale tiempo a Flask.

Suerte y la decisión es tuya.

Saludos

Enviado desde mi iPhone

Andres Gonzalez

unread,
Jan 12, 2016, 11:19:43 PM1/12/16
to La lista de python en castellano

Comparto la solución de Mario lacunza si es de aplicación de escritorio usar wxpython, Dormite sqlalchemy aunque es un monstruo es mejor dedicar mas al aprendizaje en algo que te va a dar salucion a diferentes necesidades , ahora desde punto de vista y que también he querido perderle miedo a las app web me iría por framework de los grandes como django, en esas ando ahora desarrollando una aplicación de gestion de matrícula :)

Reply all
Reply to author
Forward
0 new messages