El día 28 de abril de 2011 02:21, lopz <lowlife...@gmail.com> escribió:
> Podrías ponerme un ejemplo de como debería hacerlo? Me pones en un compromiso, ya que no uso ni gtk ni web2py. Para implementar bien el patrón MVC se requieren otros patrones como facade, observer, mediator,... que hace complicado cualquier ejemplo. Es mejor que te mires algunos de los frameworks MVC que tienes accesibles para gtk: pygtkMVC, un MVC básico para GTK: http://sourceforge.net/apps/trac/pygtkmvc AVC (Aplication-View-Controller), una implementación MVC que conecta automáticamente variables y señales para diversos GUIs: http://avc.inrim.it PureMVC: un completo patrón MVC para python (y otros lenguajes) http://trac.puremvc.org/PureMVC_Python > Dice que la vista no puede dar órdenes, pero al momento de iniciar el > modem por ej > cómo sería la cosa? > Como debo hacer para que al presionar un botón se inicie los 2 servicios? > Ya con esto de idea podré hacer el resto Intentaré darte una visión global: La clase ControlService es en realidad una vista, que instanciaría en el controlador. Así mismo, también la clase ControlData sería una vista, aunque movería la parte de actualización de datos al controlador para mejorar el desacople. Para establecer una comunicación entre vista y controlador, puede que lo más fácil de ver sea a través de una cola de eventos. Para ello el módulo 'queue' de python suele ayudar. Creas una queue donde las vistas escriban y sólo el controlador lea y borre. En esta queue (FIFO) van entrando los eventos, simples objetos con dos atributos, uno de tipo de evento y otro con el mensaje. En el caso de pulsar el botón de inicio del módem: la vista mete en la queue un evento de tipo "INIT_MODEM" (por ejemplo). El controlador, que va revisando la pila, lee el evento y decide actuar: puede arrancar los dos servicios del modem,...o lanzar un error, o no hacer nada (que para eso es el que manda). El controlador, después de procesar el evento y eliminarlo de la pila, manda mensajes de actualización a las vistas, y sigue con el siguente evento. Los mensajes enviados pueden ser simples llamadas a los métodos de las vistas o, para hacerlo más genérico, se podría implementar algún patrón "observer" que posibilite la actualización conjunta de varios elementos gráficos a la vez (algo que en gtk se hace normalmente con "señales"). Ya perdonarás que no ponga código, pero no tengo nada con qué ilustrarte. Aún así, espero que te haya aclarado algo. _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/