Foros del Web » Programando para Internet » Python »

Cómo programar con modulo-vista-controlador

Estas en el tema de Cómo programar con modulo-vista-controlador en el foro de Python en Foros del Web. Hola a todos! Estoy aprendiendo a programar con este patrón de diseño, Modelo Vista Controlador (MVC), y para ello estoy intentando hacer una aplicación de ...
  #1 (permalink)  
Antiguo 29/08/2011, 10:18
 
Fecha de Ingreso: febrero-2009
Mensajes: 2
Antigüedad: 15 años, 2 meses
Puntos: 1
Cómo programar con modulo-vista-controlador

Hola a todos!

Estoy aprendiendo a programar con este patrón de diseño, Modelo Vista Controlador (MVC), y para ello estoy intentando hacer una aplicación de escritorio muy sencilla para ver cómo funciona. La idea es hacer un programa cuya interfaz tiene un cuadro de texto para ingresar un dni, un botón que llama a la función de calcular la letra que el corresponde y la muestre en una etiqueta.
Si no he entendido mal, según este patrón de diseño (MVC), tengo que separar en 3 bloques el programa, de modo que un bloque es la parte gráfica (vista), otro bloque sería la parte que llevará las clases y funciones que voy a utilizar para hacer cálculos y esas cosas (modulo) y por último lo que entiendo que sería el programa principal que es el que servirá de enlace entre ambas (controlador), y que, supongo que por lo tanto importará lo ficheros .py de los otros 2 bloques. Bueno, al menos esto es lo que yo he entendido mirando por google, foros y demás.
Bien, estoy utilizando eclipse con pydev y wxpython sobre Ubuntu para desarrollar el programa, y para hacer la interfaz gráfica utilizo el wxglade.
La idea que tenía en la cabeza de cómo debería hacer el programa es la siguiente:

1º Hago la interfaz de usuario con el wxglade, que es una ventana con un cuadro de texto, un botón y una etiqueta. El wxglade ya me genera el fichero .py con el código que funciona perfectamente a la hora de ejecutarlo con el eclipse, así que creo que ya doy por concluida la parte gráfica o vista del programa.

2º Creo otro fichero .py con el eclipse que únicamente tiene una función que recibe una cadena (el dni), calcula la letra que le corresponde, y la devuelve.

3º Programa principal o controlador. Aquí es donde tengo el problema. Por lo que tengo entendido tengo que capturar el evento de que se pulse el botón, pero por más que lo intento no sé como hacerlo. En todos los ejemplos que visto, siempre se añade al código de la interfaz (vista) una línea como la siguiente:
self.button_calcular_letra.Bind(wx.EVT_BUTTON, funcion_metodo_a_ejecutar)
El caso, es que lo que yo quiero es no tener que tocar para nada el código de la interfaz, y que sea el controlador o programa principal el que capture dicho evento, para dejar el código de la vista "limpio", por así decirlo, pero me da errores del tipo se ha borrado el objeto, o los atributos de éste, o bien que no está definido dicho objeto.

¿Alguien sabe cómo debería hacer? Por lo que he visto por ahí, creo que la solución es algo que llaman observer, pero por lo que vi, me parece que también tendría que añadir líneas de código al código de la interfaz, cosa que no me interesa, a no ser que no halla más remedio y no sea demasiado código el que tenga que añadir.

Muchísimas gracias por vuestra atención.
  #2 (permalink)  
Antiguo 29/08/2011, 11:56
 
Fecha de Ingreso: marzo-2010
Ubicación: Mérida, Venezula
Mensajes: 73
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Cómo programar con modulo-vista-controlador

Creo que vas por el camino correcto, y como tu mismo dices. No te queda más remedio que agregar los self.objeto.Bind(wx.EVT_BUTTON, funcion_metodo) a la vista, ya que realmente forma parte de la vista. El controlador en este caso es realmente "función_metodo" y la base de datos la invoca el mismo. Si no me equivoco, la capa de abstracción donde colocas todo es la vista.
  #3 (permalink)  
Antiguo 30/08/2011, 10:24
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Cómo programar con modulo-vista-controlador

Bueno hay muchos recursos sobre wxpython + MVC

Inclusive hay videos
  #4 (permalink)  
Antiguo 30/08/2011, 19:52
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Cómo programar con modulo-vista-controlador

Lo que te puedo recomendar es crear la vista, enlazar el click del boton a un evento de la clase de la ventana, pero este dejalo en blanco.
Despues en otro archivo o en el principal defines otro clase que herede a la ventana y ahi reescribes el los metodos de eventos....

Yo estoy utilizando wxformbuilder y lo que me hace es eso. Me crea un archivo con una clase por ventana y los eventos me los enlaza pero a esos metodos vituales que crea. Despues pone un comentario diciendo que tenes que sobrecargar esos metodos.

Espero que te sirva. Yo cuando lo vi me parece espectacular...Porque ademas desde una misma ventanas podes darle diferentes usos rapidamente con eso.

Saludos
  #5 (permalink)  
Antiguo 30/08/2011, 23:19
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 122
Respuesta: Cómo programar con modulo-vista-controlador

Que tal ufychsormeer

Me parece muy bien que estés estudiando patrones de diseño, solo como consejo y observación no olvides que los patrones de diseño son solo una guia, en algunos proyectos quedan a la medida y en otros no, uno debe saber cuando utilizarlos y cuando pueden llegar a ser un estorbo y retraso.

Checa el link que te dio razpeitia se ve interesante

Saludos!
  #6 (permalink)  
Antiguo 31/08/2011, 09:50
 
Fecha de Ingreso: febrero-2009
Mensajes: 2
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: Cómo programar con modulo-vista-controlador

Muchas gracias por vuestros comentarios chicos :). La verdad es que son de mucha ayuda. Intenté copiaros el código del programa, pero no me dejó postearlo, así que meteré los 3 archivos .py en un tar, lo subiré a megaupload y os pongo aquí el link para que lo bajéis si queréis echarle un vistazo al código.

De todas formas, voy a probar a hacer lo que me comentó sam90 antes, a ver que tal y en cuanto lo consiga los subo y os pongo los links.

Salu2
  #7 (permalink)  
Antiguo 31/08/2011, 14:27
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Cómo programar con modulo-vista-controlador

Si quieres compartir tu codigo, puedes usar PasteBin para pequeños snippets o puedes crearte una cuenta en Github para compartir un proyecto completo.

Etiquetas: mvc, wxpython
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:34.