2010-05-27 17 views
5

Estoy en las etapas de planificación para volver a escribir un archivo de acceso que escribí hace varios años en un programa completo. Tengo muy poca experiencia en la codificación, pero no lo suficiente como para llamarme programador. Definitivamente aprenderé sobre la marcha, así que me gustaría mantener todo lo más simple posible. Decidí Python y SQLite para mi programa, pero necesito ayuda para mi próxima decisión.Python/Sqlite programa, escribir como aplicación de navegador o escritorio?

Aquí está mi situación

1) Se va a ejecutar localmente en cada máquina, todos los equipos Windows

2) Realmente me gustaría una interfaz gráfica de usuario de aspecto agradable con colores agradables, pantallas, menús, listas , etc.,

3) Estoy pensando en usar una interfaz de navegador porque (a) por lo que he leído, las aplicaciones de navegador pueden verse realmente bien, y (b) entiendo que hay muchas herramientas gratuitas para ayudar a configurar el código GUI/GUI con las herramientas de arrastrar y soltar, lo que ayuda a mi objetivo de "mantenerlo simple".

4) Quiero que el programa sea totalmente portátil para que se ejecute por completo de una sola carpeta en la PC de un usuario, sin necesidad de instalación (s) necesario para que se ejecute

(Si lo hice como un navegador aplicación, ¿no existe la posibilidad de que la configuración del navegador de un usuario afecte o rompa la aplicación? ¿Qué tan probable es esto?)

Para mi situación, ¿debería/podría convertirla en una aplicación de navegador? ¿Cuáles serían los pros y los contras de mi situación?

Respuesta

4

Escribir una aplicación de escritorio como una aplicación web alojada localmente no suele ser una buena idea. Aunque es posible crear excelentes interfaces de usuario con HTML, CSS y Javascript, es mucho más fácil crear interfaces con marcos de GUI convencionales.

El uso de tecnologías web para crear su GUI de escritorio introduciría una gran cantidad de complejidad innecesaria en su aplicación.

  • Crear interfaces de usuario con HTML y CSS es difícil y lleva mucho tiempo. HTML es un documento lenguaje de marcado y CSS es un documento idioma de formateo; ninguno es adecuado para crear GUI.
  • El uso de tecnologías web hace que su aplicación dependa del navegador web del usuario. Demasiadas personas todavía usan navegadores viejos y paralizados como IE 6 y 7 que no siguen los estándares modernos. Pasarás horas si no días intentando rastrear errores de interfaz que solo ocurren en ciertos navegadores.
  • Tendrá que servir su aplicación con un servidor web, presentando otra capa de complejidad. Su aplicación deberá comunicarse con su interfaz a través de tecnologías web restringidas sin ninguno de los beneficios de una verdadera aplicación web.

Recomiendo usar un marco de interfaz gráfica de usuario de escritorio, en su lugar. En particular, creo que wxPython sería el mejor marco de GUI para usar; es estable, ampliamente utilizado, bien documentado y altamente portátil. Además, puede usar un generador de interfaz basado en GUI como Boa Constructor o posiblemente wxGlade para diseñar la interfaz de usuario de su aplicación. En resumen, crear una aplicación con casi cualquier marco de GUI de escritorio sería más fácil que usar tecnologías web.

3
  1. No mencionó si está en Windows o Linux o cualquier otro sistema operativo.
  2. Si está escribiendo una aplicación de navegador, lo primero que va a necesitar es un servidor web, si cada usuario ejecuta la aplicación en su máquina local => significa que cada usuario debe tener un servidor web ejecutándose localmente.

También hay una gran cantidad de herramientas GUI Desarrollo rápido como wxPython y Glade que hacen que el diseño de la interfaz gráfica de usuario de aplicaciones de simple y más fácil.

Sugeriría que si está construyendo una aplicación de red -> Tome la ruta del navegador.

Si está construyendo una aplicación independiente, entonces vaya con una aplicación nativa.

Aquí hay una lista casi exhaustiva de todos los marcos. puede elegir lo que se ajuste a sus necesidades. http://wiki.python.org/moin/GuiProgramming

Personalmente estoy a favor de PyGtk, pero tiene una pequeña curva de aprendizaje asociada si no has hecho ninguna programación de GUI antes.

3
+0

Funcionará como una aplicación portátil? (todo desde una carpeta, no requiere instalación de ningún tipo) – ChrisC

1

creo que debería funcionar. ¿De que estás asustado? Configuración de proxy, firewall?

Creo que ejecutar servidor web localmente no es difícil para el usuario avanzado, pero podría ser un problema para el usuario medio (incluso integrado con su aplicación).

Probablemente debe ejecutar su aplicación como servicio porque forzar al usuario a iniciar el servidor antes de ingresar a la página web, podría ser frustrante.

Preferiría otras soluciones. Probablemente usaría Java (Swing) o C++ con QT. Pero me gusta su enfoque, sobre todo porque permite crear prototipos fácilmente. Si prefieres el desarrollo de estilo web, puedes probar http://www.appcelerator.com/products/titanium-desktop-application-development/, crea aplicaciones de escritorio usando html + java script + webkit. Pero no lo intenté yo mismo (pero me gustaría).

También Adobe Air podría ser una buena opción para usted.

+0

En un vistazo rápido, aceleradores se ve muy interesante. Estoy bastante seguro de querer quedarme con Python sobre otras opciones, y dice que tiene soporte completo para Python (aunque no estoy seguro de qué significa exactamente "soporte completo"). – ChrisC

4

He hecho una aplicación de escritorio que se ejecuta en Windows y creo que es una gran manera de desarrollar la aplicación.

Recomendaría echar un vistazo a bottle. Es un marco web ligero. Es menos hábil que Django, por ejemplo, pero lo hace bien. Se puede empaquetar con py2exe si desea implementar en máquinas sin Python.

Hay una gran cantidad de javascript libs en la web para ayudarte. Me gustan jquery y jquery-ui, raphaeljs ... pero hay algunos otros.

Mi aplicación se ejecuta en un pequeño navegador basado en el mshtml component of Pyjama-Desktop. De esta forma, el usuario no sabe que es una aplicación web. Pero puede dejar que la aplicación se ejecute en el navegador favorito, webbrowser python module puede ser interesante para usted.

Si su aplicación necesita acceder a su sistema de archivos, una aplicación basada en navegador puede ser difícil. Por razones de seguridad, un navegador no tiene acceso completo a su sistema de archivos. Sin embargo, puede imitar el archivo abierto con ajaxupload y guardar archivos con iframe.

Si solo se trata de una base de datos sqllite, creo que es una muy buena opción.

Espero que ayude

1

Sugeriría una aplicación de navegador. Esto elimina la necesidad de instalación en computadoras cliente (y, como tal, como agnóstico del sistema operativo), y es accesible desde cualquier parte del mundo si el DNS está configurado correctamente para el servidor.

Usando una interfaz web le permite hacer uso de algunas de las más poderosas herramientas de interfaz de usuario, tales como:

  • La capacidad de utilizar CSS para el diseño espectacular
  • La disponibilidad de JavaScript Utilidades (jQuery , ExtJS, etc.)
  • fácilmente modificados en comparación con aplicaciones de Escritorio
  • Superior accesibilidad
  • interfaz de usuario consistente (por ejemplo, usuarios Ya saben cómo "volver" obras, etc.)
  • actualizaciones centralizadas (Sólo actualizar el servidor, no cada cliente)
1

elección del tipo de solicitud se relaciona tanto con las limitaciones de la tecnología y del tipo de la experiencia del usuario que planea entregar.

  • aplicación de cliente enriquecido: Por lo general, se desarrolló como una aplicación independiente. Puede admitir escenarios desconectados u ocasionalmente conectados. Utiliza los recursos de procesamiento y almacenamiento de la máquina local.

  • Aplicación web: Puede admitir múltiples plataformas y navegadores. Admite solo escenarios conectados. Utiliza los recursos de procesamiento y almacenamiento del servidor.

Personalmente, prefiero PyQt en su caso para una aplicación portátil.

La página de inicio de PyQt es http://www.riverbankcomputing.com/software/pyqt/

PyQt es compatible con Windows, Linux, UNIX y MacOS/X plataformas.

PyQt4 es un conjunto de enlaces de Python para Qt 4 con doble licencia bajo licencia GPL (versiones 2 y 3, con excepciones de licencia adicionales) y una licencia comercial. También está PySide de Nokia, nuevas vinculaciones alternativas (desde noviembre de 2009) con licencia LGPL que tienen dificultades para ser compatibles con API (al menos hasta Qt 4.6) con PyQt4.

Herramientas y documentos

  • Documentación PyQt referencia.

  • libro PyQt4: http://www.qtrac.eu/pyqtbook.html

  • La utilidad pyuic4 es una interfaz de línea de comandos para el módulo de la UIC. Conver xml ui de Qt a python.

Qt Designer es un poderoso generador de formularios y configuraciones de GUI multiplataforma. Le permite diseñar y construir rápidamente widgets y diálogos utilizando formularios en pantalla utilizando los mismos widgets que se usarán en su aplicación. PyQt4 expone gran parte de la funcionalidad de Qt 4 (de Nokia) para Python, incluyendo:

  • Un amplio conjunto de widgets

  • controladores de distribución flexibles

  • características GUI estándar para aplicaciones (menús, barras de herramientas, ventanas de base)

  • Comunicación fácil entre los componentes de la aplicación (señales y ranuras)

  • Un sistema de pintura unificada con la transparencia, anti-aliasing, integración y soporte OpenGL SVG

  • soporte de internacionalización (i18n) y la integración con la herramienta de traducción Qt Linguist

  • Etc.

0

Su pregunta es un poco amplia. Trataré de cubrir todo lo que pueda.

Primero, lo que entendí y mis suposiciones.

En su situación, la base de datos sqlite es solo un almacén de datos.Solo un proceso (a menos que la aplicación sea de multiprocesamiento) accederá a él, por lo que no tendrá que preocuparse por problemas de bloqueo. La aplicación no necesita comunicarse con otras instancias, etc. a través de la red. Es una aplicación de escritorio única. La plataforma es Windows.

Aquí hay algunos pensamientos que me vienen a la mente.

  • Si desarrolla una aplicación en Python (ya sea basada en la web o en el escritorio), tendrá que empaquetarla como un solo ejecutable y distribuirla entre los usuarios. Es posible que tengan que instalar el tiempo de ejecución de Python, así como cualquier módulo adicional que pueda estar utilizando.
  • En mi experiencia, las guías son más fáciles de desarrollar usando un sistema de widgets independiente que en un navegador con Javascript. Hay cosas como el pijama que hacen que esto sea mejor, pero aún así es difícil.
  • Si bien no es imposible tener aplicaciones web locales ejecutándose en cada computadora, sus beneficios reales llegarán si la centraliza. Un lugar para actualizar el software. No es necesario "distribuir" etc. Esto, por supuesto, implica que utiliza un sistema de base de datos más potente y que en realidad puede administrar múltiples usuarios. También requerirá que te preocupes por las peculiaridades específicas del navegador.

I'd ir con una aplicación de escritorio simple que utiliza un kit de herramientas preempaquetado (quizás Tkinter que se envía con Python). No es el mejor de los enfoques, pero evitará problemas para usted. También consideraría usar un lenguaje que sea más "de primera clase" en Windows como C# para que los tiempos de ejecución y otras cosas ya estén allí. Su requisito para una GUI elegante es secundario y le recomiendo que obtenga la funcionalidad funcionando bien antes de centrarse en las campanas y silbatos.

Buena suerte.

Cuestiones relacionadas