MVC en python

Iniciado por the_jocker, 15 Octubre 2013, 23:32 PM

0 Miembros y 1 Visitante están viendo este tema.

the_jocker

Buenas al foro, empecé un proyecto pequeño en python para hacer presupuestos, ya tenía en mente trabajar con el lenguaje, pero nunca hice nada en serio, entonces ahora es el momento. Como vengo de aprender java en la facultad, orientado hacia escritorio y con el MVC, quiero trabajar de está manera en python.
Se me complica el hecho de que en java los módulos y paquetes se manejan muy fácil. En python trato de hacerlo de la misma manera y no puedo, es decir manejar de esa manera sencilla los paquetes. Si alguno ya trabaja de ésta manera en escritorio con python y algún gui, no importa cual, por favor una ayuda, ya que no consigo trabajar de la misma manera, no creo que la arquitectura de trabajo tenga algo que ver con el lenguaje.
Un ejemplo de como quiero trabajar:

App/
.......setup.py
.......controlador/
........................__init__.py
........................Controlador.py
......Modelo/
..................__init__.py
..................modelo.py
......Vista/
...............__init_.py
..............vista.py



Creo que se entiende, pero no puedo llamar un método de la vista con el controlador, y no puedo correr el setup porque no encuentra el módulo de la vista, en fin.

Pd: ya probé con import, from-import y nada.

Desde ya gracias.

Once

Desde setup.py puedes importar Controlador.py, modelo.py y vista.py de la siguiente forma:

Código (python) [Seleccionar]

from controlador import Controlador
from Modelo import modelo
from Vista import vista


Saludos!

the_jocker

Si, es cierto, 11Sep, los libros y el propio lenguaje dice que de esa manera debería hacerse, pero no logro dar con una solución favorable.
Y para ser un poco más preciso, como hago para llamar desde el controlador, si necesito que, debido a un evento cualquiera, la vista haga algo. Lo que probé es:

controlador.py
Código (python) [Seleccionar]

from Vista import vista


class Controller:

    def __init__(self):
          self.Saludar()

    def Saludar(self):
          vista.Mensaje


Creo que se entiende, si pulsa un botón, el controlador toma el evento y ejecuta la función.
Pero me da error, que no hay un modulo con nombre Mensaje. Y así una banda de cosas.

Gracias por tomarte un tiempo.

Once

Supongo que Mensaje es un función o una clase, así que:

Código (python) [Seleccionar]

def Saludar(self):
    vista.Mensaje()


Saludos!

the_jocker

Es cierto, de esa manera es posible, pero tuve que hacer todo de nuevo y con un ide, como ninja-ide, pero funciona de ésta manera, gracias por responder, ahora la ultima pregunta, y creo que la más importante para mi, ya que está comprobado el poder de java en las aplicaciones, gracias a la maquina, ésta manera de trabajo parece ser la correcta, ahora, en la serpiente, es recomendable, ya que en un proyecto a gran escala, y como es interpretado, tener un controlador que tenga muchas lineas de codigo, y que maneje todo, sería una buena practica para trabajar?.

Once

Cita de: the_jocker en 16 Octubre 2013, 19:13 PM
Es cierto, de esa manera es posible, pero tuve que hacer todo de nuevo y con un ide, como ninja-ide, pero funciona de ésta manera, gracias por responder, ahora la ultima pregunta, y creo que la más importante para mi, ya que está comprobado el poder de java en las aplicaciones, gracias a la maquina, ésta manera de trabajo parece ser la correcta, ahora, en la serpiente, es recomendable, ya que en un proyecto a gran escala, y como es interpretado, tener un controlador que tenga muchas lineas de codigo, y que maneje todo, sería una buena practica para trabajar?.

Sólo te puedo aconsejar desde mi experiencia (también estoy trabajando en un proyecto algo grande) el MVC y separar el proyecto en módulos es una buena idea, cuando tienen que cambiar algo lo haces en el módulo específico y no tienes que modificar todo. En mi proyecto trabajo además con una GUI en QT4 y ésta fue la mejor forma de trabajar que encontré, me ahorró muchos dolores de cabeza.

Saludos!