2010-04-10 13 views
16

Quiero crear una aplicación que se ejecute en la computadora de los usuarios, una aplicación independiente, con instalación y otras cosas, pero quiero que la interfaz sea un navegador, ya sea interna y se muestre como una ventana del SO o externa accesible usando el navegador (es decir, un servidor http).Aplicación de escritorio Python con el navegador como interfaz?

La razón sería porque sé un poco sobre Python, pero creo que puedo hacerlo mientras tenga algunas raíces básicas que pueda usar y manipular, y esas serían HTML, CSS y Javascript.

Todavía tengo que encontrar una buena herramienta de GUI que pueda usar, y siempre abandono la idea después de tratar de perder el tiempo y, finalmente, no obtener nada.

Respuesta

7

Python ofrece dos cosas que deberían ser de su interés:

  • un servidor web en la biblioteca estándar
  • una interfaz standartized para aplicaciones web, denominado WSGI

por lo que es relativamente fácil de agregar una interfaz web a su aplicación. Por ejemplo, en Mercurial (el sistema de control de versiones), tiene un comando hg serve que inicia un servidor web.

Para ver pitón lanzamiento de un servidor web y una aplicación WSGI, acaba de hacer:

python -m 'wsgiref.simple_server' 

Usted puede mirar en el código fuente wsgiref o algún tutorial WSGI que hacer una aplicación sencilla.

Después de eso, es posible que desee utilizar un framework de desarrollo web (para crear plantillas & co), pero eso es otra cuestión ...

+1

Para completar, se debe mencionar que ejecutar el servidor backend como servidor local http de localhost significa que está disponible para cualquier usuario que haya iniciado sesión en la máquina, no solo para el usuario que la haya iniciado. Si eres el único usuario, no es un problema, por supuesto; quizás incluso podría considerarse como una función si hay múltiples usuarios. –

2

Puede usar Pyjamas. Es un puerto de Google Web Toolkit para Python, que básicamente significa que escribes en Python y se compila en HTML y JS.

+0

Está muerto. Suena bien ... – Eli

+5

Excepto que no lo es, ya que su último compromiso fue hace solo un par de semanas. –

+0

hmmm, el sitio estaba muerto anoche cuando lo revisé :) ahora está funcionando ... – Eli

1

Existen muchas herramientas de GUI excelentes para la forma en que desea hacer su GUI: HTML, CSS y Javascript. Si no sabe de ninguno, haga una pregunta por separado con las etiquetas correctas.

El lado de Python en tal disposición no debería tener una GUI propia, sino simplemente ejecutar una subclase del servidor HTTP de la biblioteca estándar de Python, simplemente servir los archivos HTML, CSS y JS, y los datos a través de JSON en otras URL que el JS puede alcanzar con las técnicas de Ajax, esencialmente implementando logi de almacenamiento y negocios, por lo que está lejos de ser obvio qué "herramienta GUI" podría querer para eso?

Simplemente desarrolle el lado de Python por sí mismo (por ejemplo, con IDLE, Wingware, SPE o lo que quiera) y el HTML/CSS/Javascript por separado, con su propia "herramienta GUI". Todo lo que Python hará con esos archivos es estáticamente serve ellos, después de todo.

Podría pensar en utilizar algunas plantillas de lado de Python, como Mojo & c, pero mi recomendación es evitar eso: mejor, vaya con la "arquitectura de servidor delgado" hasta el final, haga que el lado de Python sea un servidor RESTful de lógica de negocios y capas de almacenamiento, y hacer todos la GUI funciona en el navegador en su lugar.

+1

Esta es una forma, pero otros lenguajes (por ejemplo, los de .NET) tienen bibliotecas que permiten una fácil incrustación de un navegador en una ventana y scripting o comunicarse a través de una API simple. Encuentro eso útil en varias ocasiones, pero no he podido encontrar un equivalente en Python. wxPython tiene un widget de navegador, pero está bastante desactualizado y ni siquiera admite scripting IIRC. Tk no tiene nada. Hay una incrustación de Webkit para uno de los kits de herramientas de GUI, pero es un gran dolor en la parte posterior para compilar e integrar. –

+0

Creo que estoy buscando lo que Max está hablando, un navegador integrado que se puede comunicar directamente a través de JS API con la aplicación de escritorio. – Eli

0

¿Está recurriendo a un navegador web sólo porque usted ha tenido dificultad con Python kits de herramientas de widgets, como Tkinter, wxpython y pyqt?

¿Has probado Qt Designer? Es un diseñador gráfico de GUI, por lo que es muy rápido y fácil desarrollar GUI de gran apariencia. Se instala automáticamente con PyQt.

http://www.riverbankcomputing.co.uk/software/pyqt/download

+0

Sí y no. Tengo un problema con los kits de herramientas de GUI, y para mí, como desarrollador web, es mucho más fácil trabajar con HTML y JavaScript estándar. ¿Qt no funciona solo para aplicaciones no comerciales si no tengo licencia Qt? – Eli

+1

@Eli, Qt tiene una doble licencia LGPL/comercial. Básicamente, si planea publicar su aplicación, debe abrir la fuente u obtener una licencia comercial. –

Cuestiones relacionadas