示例#1
0
 def instanciar_cabina_economica(self):
     cab_economica = cabinas.InstanciadorCabina()
     funcion_h = func.FuncionesGui()
     try:
         self.lbl_monto.configure(
             text=str(self.lugar.precio.precio_economico))
         self.cabina = cab_economica.instanciar_cabina_economica(
             self.lugar.precio)
         funcion_h.habilitar_boton(self.btn_siguiente3)
     except AttributeError:
         showerror('Error', 'No ha seleccionado un lugar')
示例#2
0
 def instanciar_cabina_especial(self):
     '''Funcion que hace instanciar una cabina especial'''
     cab_especial = cabinas.InstanciadorCabina()
     funcion_h = func.FuncionesGui()
     try:
         self.lbl_monto.configure(
             text=str(self.lugar.precio.precio_especial))
         self.cabina = cab_especial.instanciar_cabina_especial(
             self.lugar.precio)
         funcion_h.habilitar_boton(self.btn_siguiente3)
     except AttributeError:
         showerror('Error', 'No ha seleccionado un lugar')
示例#3
0
 def al_presionar_enter(self, event):
     funcion_hd = func.FuncionesGui()  #funcion habilitar deshabilitar
     try:
         num_vuelo = int(self.fecha.get())
         self.vuelo = self.lugar.cant_vuelos[num_vuelo - 1]
         if self.vuelo.habilitado:
             showinfo('Mensaje', 'El vuelo está habilitado')
             funcion_hd.habilitar_boton(self.btn_reservar)
         else:
             showinfo('Mensaje', 'El vuelo no está habilitado')
             funcion_hd.deshabilitar_boton(self.btn_reservar)
     except ValueError:
         self.cuadro_selec.configure(highlightbackground='red')
         showinfo('Corrección', 'No se reconoce el valor')
     except IndexError:
         showinfo('Corrección', 'Fuera de rango')
示例#4
0
 def reservar(self):
     '''Función que realiza la reserva final'''
     persist = persistencia.PersistenciaP()
     funcion_imp = funcion.FuncionesPrincipales()
     funcion_d = func.FuncionesGui()
     if askyesno('Mensaje', '¿Está seguro que quiere hacer la reserva?'):
         self.reserva_pasajero = reserva.Reserva(self.pasajero, self.lugar,
                                                 self.cabina, self.vuelo,
                                                 self.cantidad_pasajeros)
         persist.save(str(self.pasajero.cedula), self.reserva_pasajero)
         funcion_imp.imprimir_comprobante(self.reserva_pasajero)
         mensaje_reserva = 'Ha hecho su reserva. Por favor, guarde el comprobante' \
                           ' y presente en la agencia de viajes para su posterior' \
                           ' confirmación. ¡Gracias por utilizar nuestro servicio!'
         showinfo('Confirmación', mensaje_reserva)
         funcion_d.deshabilitar_boton(self.btn_reservar)
示例#5
0
 def verificar_cantidad_pasajero(self):
     #se crea un objeto controlador vuelo
     controlador_v = controlar_vuelo.ControlarVuelo()
     #se crea un objeto funcion verificar
     funcion_v = func.FuncionesGui()
     self.estado = "Correcto"  #el estado de la validacion se inicializa a correcto
     try:
         self.adultos = int(self.c_adultos.get())
         self.niños = int(self.c_niños.get())
         self.bebes = int(self.c_bebes.get())
         if controlador_v.controlar_cantidad_personas(
                 self.adultos, self.niños, self.bebes):
             showinfo('Mensaje', 'Cantidad correcta')
             self.cantidad_pasajeros = [
                 self.adultos, self.niños, self.bebes
             ]
             funcion_v.habilitar_boton(self.btn_siguiente2)
         else:
             funcion_v.deshabilitar_boton(self.btn_siguiente2)
     except ValueError:
         showerror('Error', 'Error de valor en cantidad pasajeros ')
         self.estado = 'Incorrecto'
         funcion_v.deshabilitar_boton(self.btn_siguiente2)
示例#6
0
    def mostrar_horarios(self):
        funcion_d = func.FuncionesGui()  #funcion deshabilitar
        funcion_d.deshabilitar_boton(self.btn_siguiente3)
        self.vuelo = None
        self.root2 = instancias.MiToplevel()
        self.root2.geometry("640x360+400+200")
        img2 = PhotoImage(file="vuelo.gif")
        widget2 = instancias.MiLabel(self.root2, image=img2)
        widget2.place(x=-130, y=-200)

        lbl_titulo = instancias.MiLabel(self.root2,
                                        text='HORARIOS',
                                        font=('bold', 14))
        lbl_titulo.pack()

        texto = 'Para seleccionar el horario fíjese en el estado del vuelo'
        lbl_sub_titulo = instancias.MiLabel(self.root2, text=texto)
        lbl_sub_titulo.pack()

        lbl_codigo = instancias.MiLabel(self.root2,
                                        text='Código',
                                        fg='blue',
                                        font=('Arial', 13))
        lbl_codigo.place(x=40, y=54)

        lbl_transporte = instancias.MiLabel(self.root2,
                                            text='Transporte',
                                            fg='blue',
                                            font=('Arial', 13))
        lbl_transporte.place(x=165, y=54)

        lbl_horario = instancias.MiLabel(self.root2,
                                         text='Horario',
                                         fg='blue',
                                         font=('Arial', 13))
        lbl_horario.place(x=295, y=54)

        lbl_fecha = instancias.MiLabel(self.root2,
                                       text='Fecha',
                                       fg='blue',
                                       font=('Arial', 13))
        lbl_fecha.place(x=425, y=54)

        lbl_estado = instancias.MiLabel(self.root2,
                                        text='Estado',
                                        fg='blue',
                                        font=('Arial', 13))
        lbl_estado.place(x=550, y=54)

        self.btn_reservar = instancias.MiBoton(
            self.root2,
            text='Reservar',
            cursor='hand2',
            state='disabled',
            command=self.reservar)  # funcion impl
        self.btn_reservar.place(x=280, y=320)

        y_estado = 80  # eje y
        conta = 1  # contador num vuelo
        controlador_v = controlar_vuelo.ControlarVuelo()

        for vuelo in self.lugar.cant_vuelos:
            ahora = datetime.now()
            hora_actual = time(ahora.hour, ahora.minute, ahora.second)
            controlador_v.controlar_partida(hora_actual, vuelo)
            muestra_vuelo = instancias.MiLabel(self.root2, text=str(vuelo))
            muestra_vuelo.place(x=40, y=y_estado)
            muestra_nro_vuelo = instancias.MiLabel(self.root2,
                                                   text=str(conta),
                                                   fg='blue')
            muestra_nro_vuelo.place(x=15, y=y_estado)
            y_estado = y_estado + 30
            conta += 1

        lbl_selec = instancias.MiLabel(self.root2,
                                       text='Ingrese el número de vuelo (1-7)')
        lbl_selec.place(x=15, y=300)

        btn_ayuda = instancias.MiBoton(self.root2,
                                       text='info',
                                       bitmap='info',
                                       command=self.mostrar_info)
        btn_ayuda.place(x=240, y=296)
        self.fecha = instancias.MiStringVar()
        self.cuadro_selec = Entry(self.root2, textvariable=self.fecha, width=2)
        self.cuadro_selec.place(x=217, y=299)
        self.cuadro_selec.bind('<Return>', self.al_presionar_enter)

        self.root2.transient(self.root7)
        self.root2.mainloop()
示例#7
0
    def crear_vuelo(self):
        '''Funcion que muestra los paises'''
        funcion_vc = func.FuncionesGui()  #se crea una funcion
        funcion_vc.deshabilitar_boton(self.btn_siguiente2)
        self.root7 = instancias.MiToplevel()
        self.root7.geometry("600x370+400+200")
        self.root7.configure(bg='white')

        lb_titulo = instancias.MiLabel(self.root7,
                                       text='VUELOS Y CABINAS',
                                       font=('sawasdee', 14, 'bold'),
                                       bg='white',
                                       fg='blue')
        lb_titulo.pack()

        texto = 'Paso 3. Seleccione el lugar en donde quiere viajar. Para cada lugar se ' \
                'mostrarán los diferentes\nprecios que corresponden a cada cabina.'
        lb_info = instancias.MiLabel(self.root7,
                                     text=texto,
                                     justify=LEFT,
                                     bg='white')
        lb_info.place(x=15, y=35)

        self.p = StringVar()
        self.paises = Spinbox(self.root7,
                              values=('Buenos Aires', 'Bogotá', 'Cancún',
                                      'Miami', 'Rio de Janeiro', 'La Paz',
                                      'Guayaquil', 'Madrid', 'Montevideo',
                                      'Punta Cana', 'Paris', 'Lima'),
                              textvariable=self.p,
                              command=self.reservar_lugar,
                              bg='white',
                              fg='blue',
                              font=('sawasdee', 13))
        self.paises.place(x=80, y=100)

        self.img_paises = PhotoImage(file='paises.gif')
        self.lb_paises = instancias.MiLabel(self.root7,
                                            image=self.img_paises,
                                            bg='white')
        self.lb_paises.place(x=305, y=75)

        self.rdb_cabina_especial = instancias.MiRadioButton(
            self.root7,
            text="Especial",
            state='disabled',
            bg='white',
            highlightbackground='white',
            font=('sawasdee', 14),
            value=1,
            command=self.instanciar_cabina_especial)
        self.rdb_cabina_especial.place(x=80, y=150)

        self.rdb_cabina_intermedia = instancias.MiRadioButton(
            self.root7,
            text="Intermedia",
            state='disabled',
            bg='white',
            highlightbackground='white',
            font=('sawasdee', 14),
            value=2,
            command=self.instanciar_cabina_intermedia)
        self.rdb_cabina_intermedia.place(x=80, y=180)

        self.rdb_cabina_economica = instancias.MiRadioButton(
            self.root7,
            text="Económica",
            state='disabled',
            bg='white',
            highlightbackground='white',
            font=('sawasdee', 14),
            value=3,
            command=self.instanciar_cabina_economica)
        self.rdb_cabina_economica.place(x=80, y=205)

        lbl_precio = instancias.MiLabel(self.root7,
                                        text='Precio en US$',
                                        bg='white',
                                        font=('sawasdee', 14))
        lbl_precio.place(x=77, y=250)

        self.lbl_monto = instancias.MiLabel(self.root7,
                                            font=('sawasdee', 14),
                                            bg='white')
        self.lbl_monto.place(x=210, y=251)

        self.btn_siguiente3 = instancias.MiBoton(self.root7,
                                                 text='Siguiente',
                                                 relief=FLAT,
                                                 fg='blue',
                                                 state='disabled',
                                                 command=self.mostrar_horarios,
                                                 font=('sawasdee', 14))
        self.btn_siguiente3.place(x=250, y=320)

        self.root7.transient(self.root6)
        self.root7.mainloop()
示例#8
0
    def crear_cant_pasajero(self):
        '''Funcion que muestra la cantidad de pasajeros a seleccionar'''
        funcion_c = func.FuncionesGui()  #se crea un objeto funcion
        funcion_c.deshabilitar_boton(self.btn_siguiente1)
        self.root6 = instancias.MiToplevel()
        self.root6.geometry("600x370+400+200")
        self.root6.configure(bg='white')

        lb_titulo = instancias.MiLabel(self.root6,
                                       text='CANTIDAD DE PASAJEROS',
                                       font=('sawasdee', 14, 'bold'),
                                       bg='white',
                                       fg='blue')
        lb_titulo.pack()

        self.img_cant = PhotoImage(file='pasajero.gif')
        self.lb_imagen_pasajero = instancias.MiLabel(self.root6,
                                                     image=self.img_cant,
                                                     bg='white')
        self.lb_imagen_pasajero.place(x=310, y=105)

        texto = 'Paso 2. Seleccione la cantidad de pasajero. La cantidad máxima de boletas que\n' \
                'puede reservar es nueve.'
        lb_info = instancias.MiLabel(self.root6, text=texto)
        lb_info.place(x=53, y=40)

        lb_adultos = instancias.MiLabel(self.root6,
                                        text="Adultos",
                                        bg='white',
                                        font=('sawasdee', 14, 'bold'))
        lb_adultos.place(x=150, y=120)
        lb_niños = instancias.MiLabel(self.root6,
                                      text="Niños",
                                      bg='white',
                                      font=('sawasdee', 14, 'bold'))
        lb_niños.place(x=150, y=170)
        lb_bebes = instancias.MiLabel(self.root6,
                                      text="Bebes",
                                      bg='white',
                                      font=('sawasdee', 14, 'bold'))
        lb_bebes.place(x=150, y=220)

        self.c_adultos = instancias.MiStringVar()
        self.spin_adulto = Spinbox(self.root6,
                                   from_=1,
                                   to=9,
                                   width=2,
                                   textvariable=self.c_adultos)
        self.spin_adulto.place(x=250, y=130)

        self.c_niños = instancias.MiStringVar()
        self.spin_niño = Spinbox(self.root6,
                                 from_=0,
                                 to=9,
                                 width=2,
                                 textvariable=self.c_niños)
        self.spin_niño.place(x=250, y=180)

        self.c_bebes = instancias.MiStringVar()
        self.spin_bebes = Spinbox(self.root6,
                                  from_=0,
                                  to=9,
                                  width=2,
                                  textvariable=self.c_bebes)
        self.spin_bebes.place(x=250, y=230)

        self.btn_verificar = instancias.MiBoton(
            self.root6,
            text='Verificar',
            relief=FLAT,
            font='sawasdee',
            highlightbackground='blue',
            command=self.verificar_cantidad_pasajero)
        self.btn_verificar.place(x=340, y=295)

        self.btn_siguiente2 = instancias.MiBoton(self.root6,
                                                 text='Siguiente',
                                                 relief=FLAT,
                                                 font='sawasdee',
                                                 highlightbackground='blue',
                                                 state='disabled',
                                                 command=self.crear_vuelo)
        self.btn_siguiente2.place(x=445, y=295)

        #la ventana root6 es ventana hija de root3
        self.root6.transient(self.root3)
        self.root6.mainloop()
示例#9
0
    def instanciar_pasajero(self):
        self.estado = "Correcto"
        nombre = self.nombre.get()
        apellido = self.apellido.get()
        cedula = self.cedula.get()
        fecha = self.fecha_nacimiento.get()
        contacto = self.contacto.get()
        correo = self.correo.get()
        direccion = self.direccion.get()
        nacionalidad = self.nacionalidad.get()

        persona = per.Pasajero(nombre, apellido, fecha, cedula, direccion,
                               contacto, correo, nacionalidad)

        #se crea un objeto controlador
        controlador_p = controlador_pasajero.ControladorPasajero()
        #se crea un objecto 'funcion gui'
        funcion_p = func.FuncionesGui()
        # se valida el nombre de la persona
        if controlador_p.validar_nombre(persona):
            self.txtNombre.configure(highlightbackground='green')
        else:
            self.txtNombre.configure(highlightbackground='red')
            self.estado = "Incorrecto"

        # se valida el apellido de la persona
        if controlador_p.validar_apellido(persona):
            self.txtApellido.configure(highlightbackground='green')
        else:
            self.txtApellido.configure(highlightbackground='red')
            self.estado = "Incorrecto"

        # se valida la cédula de la persona
        if controlador_p.validar_cedula(persona):
            self.txtCedula.configure(highlightbackground='green')
        else:
            self.txtCedula.configure(highlightbackground='red')
            self.estado = "Incorrecto"

        # se valida la fecha de nacimiento de la persona
        if controlador_p.validar_fecha_nacimiento(persona):
            self.txtFecha.configure(highlightbackground='green')
        else:
            self.txtFecha.configure(highlightbackground='red')
            self.estado = "Incorrecto"

        # se valida el contacto de la persona
        if controlador_p.validad_contacto(persona):
            self.txtContacto.configure(highlightbackground='green')
        else:
            self.txtContacto.configure(highlightbackground='red')
            self.estado = "Incorrecto"

        # se valida el correo de la persona
        if controlador_p.validar_correo(persona):
            self.txtCorreo.configure(highlightbackground='green')
        else:
            self.txtCorreo.configure(highlightbackground='red')
            self.estado = "Incorrecto"

        #valida la dirección de la persona
        if controlador_p.validar_direccion(persona):
            self.txtDireccion.configure(highlightbackground='green')
        else:
            self.txtDireccion.configure(highlightbackground='red')
            self.estado = "Incorrecto"

        # se valida la nacionalidad de la persona
        if controlador_p.validar_nacionalidad(persona):
            self.txtNacionalidad.configure(highlightbackground='green')
        else:
            self.txtNacionalidad.configure(highlightbackground='red')
            self.estado = "Incorrecto"

        #si el estaoo de los datos es correcto, la persona pasa a ser un pasajero y se habilita el sgt boton
        if self.estado == "Correcto":
            showinfo('Mensaje', 'Datos correctos')
            self.pasajero = persona
            funcion_p.habilitar_boton(self.btn_siguiente1)
        else:
            funcion_p.deshabilitar_boton(self.btn_siguiente1)