2010-01-07 23 views
7

Estoy tratando de hacer una aplicación cereza con un wxpython ui. El problema es que ambas bibliotecas usan manejadores de eventos de bucle cerrado. ¿Hay alguna manera de que esto funcione? Si tengo el wx ui start cherrypy ¿eso va a encerrar a la interfaz de usuario?cherrypy y wxpython

+0

¿Puede describir su aplicación un poco? No estoy seguro de cómo está integrando un servidor web y una GUI. –

+1

Su pregunta suena como dos hobbits – Manu

Respuesta

5

Véase mi respuesta a CherryPy interferes with Twisted shutting down on Windows

En resumen, CherryPy maneja el bucle principal de forma predeterminada, pero definitivamente no necesita. Deje de usar el inicio rápido y llame al motor. Comience sin bloque de motor, y CP se ejecutará en sus propios hilos y dejará el hilo principal para que controle su otro marco.

1

Si utiliza el enhebrado, debería poder iniciar el servidor CherryPy en un hilo y ejecutar wxPython en el otro. Este artículo (http://wiki.wxpython.org/LongRunningTasks) en la wiki de wxPython contiene información sobre cómo enhebrar, y el código fuente del servidor CherryPy (http://www.cherrypy.org/browser/trunk/cherrypy/wsgiserver/__init__.py) contiene cierta documentación sobre cómo funciona el servidor y, posiblemente, cómo puede lograr que interactúe con los hilos.

1

Una forma de desacoplarlos sería iniciarlos como dos procesos separados y hacer que se comuniquen a través de algún tipo de mecanismo de IPC. Puede que tenga que escribir un adaptador pequeño para que hablen un protocolo común.

Como está haciendo CherryPy, también podría exponer una interfaz de control a través de HTTP que la GUI de wx puede usar para controlar su servidor.

1

Le animo a que eche un vistazo al Caliber (administrador de libros electrónicos) source. Está escrito en PyQT, pero usa CherryPy para permitir que las personas vean su biblioteca desde fuera de su LAN.