コード例 #1
0
ファイル: mainmenu.py プロジェクト: Dragonbr/EDP11
def main():
#Declaraciones de la GUI Principal
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.setFixedWidth(908)
    MainWindow.setFixedHeight(610)
    MainWindow.show()

#Declaraciones de la accion Abrir Perfil Dietista
    gui = GUI(ui,MainWindow)

#Conexion de accion Abrir Perfil Dietista y GUI Perfil Dietista
    dietista = Dietista(gui)
    dietista.VentanaAbrir()

    gui.conectarAct(ui.actionDietista, dietista.MostrarDietistas)

#Declaraciones de la accion Cerrar Perfil 
    dietista.VentanaCerrar()

#Conexion de accion Cerrar Perfil y GUI Cerrar Perfil
    gui.conectarAct(ui.actionCerrar_Perfil, dietista.WindowCPer.show)
    gui.conectarAcp(dietista.uiCPe.buttonBox, dietista.CerrarPerf)

#Declaraciones de la accion Nuevo Paciente
    paciente = Paciente(gui)
    objetos = Objetos()
    paciente.VentanaNuevo()

#Conexion de accion Nuevo Paciente y GUI Nuevo Paciente  
    gui.conectarAct(ui.actionNuevo_Paciente, paciente.NuevoPaciente)
    gui.conectarAcp(paciente.uiNP.buttonBox, lambda: paciente.MostrarVentana2NPaciente(paciente.uiNP))
    gui.conectarRej(paciente.uiNP2.buttonBox, paciente.WindowNewPac.show)

#Declaraciones de la accion Abrir Paciente
    paciente.VentanaAbrir()

#Conexion de accion Abrir Paciente y GUI Abrir Paciente
    gui.conectarAct(ui.actionAbrir_Paciente, lambda: paciente.AbrirPaciente(ui,dietista))
    gui.conectarAcp(paciente.uiAP.buttonBox, lambda: paciente.MostrarDatosP(ui))

#Declaraciones de la accion Eliminar Paciente
    paciente.VentanaEliminar()
    
#Conexion de accion Eliminar Paciente y GUI Eliminar Paciente
    gui.conectarAct(ui.actionEliminar_Paciente, lambda: paciente.EliminarPaciente(ui,dietista))
    gui.conectarAcp(paciente.uiEP.buttonBox, paciente.DropPaciente)
#Declaraciones de la accion Cerrar Paciente
    paciente.VentanaCerrar()

#Conexion de accion Cerrar Paciente y GUI Cerrar Paciente
    gui.conectarAct(ui.actionCerrar_Paciente, paciente.WindowCPac.show)
    gui.conectarAcp(paciente.uiCP.buttonBox, lambda: paciente.CerrarPaciente(ui,objetos)
)
    gui.conectarAcp(dietista.uiCPe.buttonBox, lambda: paciente.CerrarPaciente(ui,objetos))
    gui.conectarAcp(dietista.uiCPe.buttonBox, gui.QuitarEnabled)

#Declaraciones de la accion Nueva Receta
    receta = Receta()

#Conexion de accion Nueva Receta y GUI Nueva Receta
    receta.VentanaNueva()
    gui.conectarAct(ui.actionNueva_Receta, receta.Nueva_Receta)

#Declaraciones de la accion Modificar Receta
    receta.VentanaModif()

#Conexion de accion Modificar Receta y GUIs Modificar Receta
    gui.conectarAct(ui.actionEditar_Receta, lambda: receta.SeleccionarReceta(dietista))
    gui.conectarAcp(receta.uiSR.buttonBox, lambda: receta.VentanaModificar(dietista))
    gui.conectarRej(receta.uiMR.buttonBox, receta.WindowSelRec.show)
    gui.conectarAcp(dietista.uiCPe.buttonBox, lambda: receta.InicializarTreeWidget(ui))

#Declaraciones de la accion Modificar Receta
    receta.VentanaElim()

#Conexion de accion Eliminar Receta y GUI Eliminar Receta
    gui.conectarAct(ui.actionEliminar_Receta, lambda: receta.listElimReceta(dietista))
    gui.conectarAcp(receta.uiER.buttonBox, lambda: receta.DropReceta(dietista))

#Copia nombre y apellidos en rotulo
    def copiaNA():
        ui.lineEdit.setText(ui.lineEdit_Nom.text()+" "+ui.lineEdit_Apell.text())

    gui.conectarText(ui.lineEdit_Nom, copiaNA)
    gui.conectarText(ui.lineEdit_Apell, copiaNA)

#Calcular IMC a partir de peso / altura^2
    def modificaIMC():
        if ui.doubleSpin_Peso.value() != 0:
            if ui.doubleSpin_Alt.value() != 0:
                imc = ui.doubleSpin_Peso.value() / (math.pow(ui.doubleSpin_Alt.value() / 100,2.0))
                ui.doubleSpin_IMC.setValue(imc)    

    gui.conectarValue(ui.doubleSpin_Peso, modificaIMC)
    gui.conectarValue(ui.doubleSpin_Alt, modificaIMC)
    
#Determinar Grado de obesidad segun IMC
    def dotarGrado():
        if ui.doubleSpin_IMC.value() < 25:
            ui.toolButton_Grado.setText("Ok")
            ui.toolButton_Grado.setStyleSheet("color: #0dc434")
        elif 25 <= ui.doubleSpin_IMC.value() <= 27.99:
            ui.toolButton_Grado.setText("I")
            ui.toolButton_Grado.setStyleSheet("color: #feff0d")
        elif 28 <= ui.doubleSpin_IMC.value() <= 31.99:
            ui.toolButton_Grado.setText("II")
            ui.toolButton_Grado.setStyleSheet("color: #ee9711")
        elif 32 <= ui.doubleSpin_IMC.value() <= 41.99:
            ui.toolButton_Grado.setText("III")
            ui.toolButton_Grado.setStyleSheet("color: #ff0000")
        elif ui.doubleSpin_IMC.value() >= 42:
            ui.toolButton_Grado.setText("IV")
            ui.toolButton_Grado.setStyleSheet("color: #aa0821")

    gui.conectarValue(ui.doubleSpin_IMC, dotarGrado)
    gui.conectarValue(ui.doubleSpin_Peso, dotarGrado)
    gui.conectarValue(ui.doubleSpin_Alt, dotarGrado)

#Declaraciones del toolButton Grado obesidad
    WindowNivel = QtGui.QDialog()
    uiNiv = Ui_DialogNivel()
    uiNiv.setupUi(WindowNivel)

#Conexion de toolButton Grado obesidad y GUI Tabla Niveles
    gui.conectarClic(ui.toolButton_Grado,  WindowNivel.show)
    gui.conectarAcp(uiNiv.pushButton, WindowNivel.accept)

#Calculo edad a partir de fecha
    def calcularEdad(ui):
        hoy = datetime.date.today()
        fechaNac = datetime.date(ui.date_FNac.date().year(), ui.date_FNac.date().month(), ui.date_FNac.date().day())
        cumple = fechaNac.replace(year = hoy.year)
        anio = (hoy.year - fechaNac.year)
        if anio > 0:
            if hoy >= cumple:
                ui.lineEdit_Edad.setText(str(anio))
            elif hoy < cumple:
                ui.lineEdit_Edad.setText(str(anio-1))
        else:
            ui.lineEdit_Edad.setText("0")

    gui.conectar(ui.date_FNac, QtCore.SIGNAL("dateChanged(QDate)"), lambda: calcularEdad(ui))
    gui.conectar(paciente.uiNP.date_FNac, QtCore.SIGNAL("dateChanged(QDate)"), lambda: calcularEdad(paciente.uiNP))
 
#Calculo metabolismo basal
    def calcularMB():
        if ui.combo_FM.currentIndex() == 0:
            mb = 8.7 * ui.doubleSpin_POb.value() + 829
            ui.doubleSpin_MB.setValue(mb)
        elif ui.combo_FM.currentIndex() == 1:
            mb = 11.6 * ui.doubleSpin_POb.value() + 879
            ui.doubleSpin_MB.setValue(mb)

    gui.conectarValue(ui.doubleSpin_POb, calcularMB)
    gui.conectarIndex(ui.combo_FM, calcularMB)

#Incremento segun Actividad
    def modificarMB():
        if ui.combo_FM.currentIndex() == 0: #Mujer
            if ui.combo_Activ.currentIndex() == 0: #Delgada
                incr = 1.56 * ui.doubleSpin_MB.value() 
            elif ui.combo_Activ.currentIndex() == 1:  #Media
                incr =  1.64 * ui.doubleSpin_MB.value()
            elif ui.combo_Activ.currentIndex() == 2:  #Ancha
                incr =  1.82 * ui.doubleSpin_MB.value()
        elif ui.combo_FM.currentIndex() == 1: #Hombre
            if ui.combo_Activ.currentIndex() == 0: #Delgada
                incr = 1.55 * ui.doubleSpin_MB.value()
            elif ui.combo_Activ.currentIndex() == 1: #Media
                incr = 1.78 * ui.doubleSpin_MB.value()
            elif ui.combo_Activ.currentIndex() == 2: #Ancha
                incr = 2.1 * ui.doubleSpin_MB.value()
        ui.doubleSpin_Increm.setValue(incr)

    gui.conectarValue(ui.doubleSpin_MB, modificarMB)
    gui.conectarIndex(ui.combo_Activ, modificarMB)
    gui.conectarIndex(ui.combo_FM, modificarMB)

#Reduccion segun edad
    def reducirMB():
        if "40" <= ui.lineEdit_Edad.text() <= "49":
            red = ui.doubleSpin_Increm.value() * 5 / 100
        elif "50" <= ui.lineEdit_Edad.text() <= "59":
            red = ui.doubleSpin_Increm.value() * 10 / 100
        elif "60" <= ui.lineEdit_Edad.text() <= "69":
            red = ui.doubleSpin_Increm.value() * 20 / 100
        elif ui.lineEdit_Edad.text() > "70":
            red = ui.doubleSpin_Increm.value() * 30 / 100
        else:
            red = 0
        ui.doubleSpin_Reduc.setValue(red)

    gui.conectar(ui.date_FNac, QtCore.SIGNAL("dateChanged(QDate)"), reducirMB)
    gui.conectarValue(ui.doubleSpin_Increm, reducirMB)

#Calculo Energia Total
    def calcularET():
        et = ui.doubleSpin_Increm.value() - ui.doubleSpin_Reduc.value()
        ui.doubleSpin_ET.setValue(et)

    gui.conectarValue(ui.doubleSpin_Increm, calcularET)
    gui.conectarValue(ui.doubleSpin_Reduc, calcularET)

#Calculo rango necesidades energeticas(Glucidica,Lipidica,Proteica) en orden
    def calcularNG():
        inf = ui.doubleSpin_ET.value() * 50 / 100
        sup = ui.doubleSpin_ET.value() * 60 / 100
        rango = str(inf) + " - " + str(sup)
        ui.lineEdit_NG.setText(rango)

    def calcularNL():
        inf = ui.doubleSpin_ET.value() * 30 / 100
        sup = ui.doubleSpin_ET.value() * 35 / 100
        rango = str(inf) + " - " + str(sup)
        ui.lineEdit_NL.setText(rango)

    def calcularNP():
        inf = ui.doubleSpin_ET.value() * 12 / 100
        sup = ui.doubleSpin_ET.value() * 15 / 100
        rango = str(inf) + " - " + str(sup)
        ui.lineEdit_NP.setText(rango)

    gui.conectarValue(ui.doubleSpin_ET, calcularNG)
    gui.conectarValue(ui.doubleSpin_ET, calcularNL)
    gui.conectarValue(ui.doubleSpin_ET, calcularNP)

#Calculo KCal / % segun numero de ingestas
    def repartoingestas():
        if ui.comboBox.currentIndex() == 0: #6 ingestas
            linea1 = linea6 = ui.doubleSpin_ET.value() * 5 / 100
            linea2 = linea4 = ui.doubleSpin_ET.value() * 15 / 100
            linea3 = linea5 = ui.doubleSpin_ET.value() * 30 / 100
            ui.lineEdit_6_1.setText(str(round(linea1,3)))
            ui.lineEdit_6_2.setText(str(round(linea2,3)))
            ui.lineEdit_6_3.setText(str(round(linea3,3)))           
            ui.lineEdit_6_4.setText(str(round(linea4,3)))
            ui.lineEdit_6_5.setText(str(round(linea5,3)))
            ui.lineEdit_6_6.setText(str(round(linea6,3)))
        elif ui.comboBox.currentIndex() == 1: #5 ingestas
            linea1 = ui.doubleSpin_ET.value() * 10 / 100
            linea2 = linea4 = ui.doubleSpin_ET.value() * 15 / 100
            linea3 = linea5 = ui.doubleSpin_ET.value() * 30 / 100
            ui.lineEdit_5_1.setText(str(round(linea1,3)))
            ui.lineEdit_5_2.setText(str(round(linea2,3)))
            ui.lineEdit_5_3.setText(str(round(linea3,3)))           
            ui.lineEdit_5_4.setText(str(round(linea4,3)))
            ui.lineEdit_5_5.setText(str(round(linea5,3)))
        elif ui.comboBox.currentIndex() == 2: #4 ingestas
            linea1 = linea3 = ui.doubleSpin_ET.value() * 15 / 100
            linea2 = linea4 = ui.doubleSpin_ET.value() * 30 / 100
            ui.lineEdit_4_1.setText(str(round(linea1,3)))
            ui.lineEdit_4_2.setText(str(round(linea2,3)))
            ui.lineEdit_4_3.setText(str(round(linea3,3)))           
            ui.lineEdit_4_4.setText(str(round(linea4,3)))
        elif ui.comboBox.currentIndex() == 3: #3 ingestas
            linea1 = ui.doubleSpin_ET.value() * 25 / 100
            linea2 = ui.doubleSpin_ET.value() * 40 / 100
            linea3 = ui.doubleSpin_ET.value() * 35 / 100
            ui.lineEdit_3_1.setText(str(round(linea1,3)))
            ui.lineEdit_3_2.setText(str(round(linea2,3)))
            ui.lineEdit_3_3.setText(str(round(linea3,3)))           

    gui.conectarValue(ui.doubleSpin_ET, repartoingestas)
    gui.conectarIndex(ui.comboBox, repartoingestas)
    
#Calculo de Peso Ideal con BBDD
    def filtrarPI():
        if ui.combo_FM.currentIndex() == 0:
            FM = "F"
        elif ui.combo_FM.currentIndex() == 1:
            FM = "M"
        if ui.combo_Complex.currentIndex() == 0:
            COMP = "Delgada"
        elif ui.combo_Complex.currentIndex() == 1:
            COMP = "Media"
        elif ui.combo_Complex.currentIndex() == 2:
            COMP = "Ancha"
        ALT = str(ui.doubleSpin_Alt.value())
        return (FM,COMP,ALT,)
    
    def mostrarPI():
        valores = filtrarPI()
        #Declaracion y conexion con la bbdd
        bbdd = dbapi.connect('edp11.bd')
        cursor = bbdd.cursor()
        #Consulta a la bbdd y guardado del resultado
        cursor.execute("select pi_peso from Peso_Ideal where pi_fm=? and pi_compl=? and pi_alt=? ", valores)
        row = cursor.fetchone()
        #Establecer valor obtenido en lineedit de peso ideal
        if row != None:
            row = row[0]
            ui.lineEdit_PIdeal.setText(row)
        #Cierre de la bbdd y de la consulta
        cursor.close()
        bbdd.close()

    gui.conectarValue(ui.doubleSpin_Alt, mostrarPI)
    gui.conectarIndex(ui.combo_Complex, mostrarPI)
    gui.conectarIndex(ui.combo_FM, mostrarPI)
    
#Declaracion Registro Dietista
    dietista.VentanaRegistro()
    
#Conexion button Nuevo de abrir perfil dietista y GUI Registro Dietista
    gui.conectarRej(dietista.uiRD.buttonBox, dietista.WindowPDiet.show)
    gui.conectarClic(dietista.uiPD.Button_Nuevo, dietista.Nuevo)
    gui.conectarAcp(dietista.uiRD.buttonBox, dietista.GuardarDietista)

#Declaracion GUI Eliminar Perfil
    dietista.VentanaEliminar()

#Conexion button eliminar de abrir perfil dietista y treeWidget  
    gui.conectarRej(dietista.uiEP.buttonBox, dietista.WindowPDiet.show)
    gui.conectarClic(dietista.uiPD.Button_Elim, dietista.Eliminar)
    gui.conectarAcp(dietista.uiEP.buttonBox, dietista.ElimPerf)

#Declaracion GUI Perfil Dietista Pass
    dietista.VentanaLogin()

#Conexion button Aceptar de Perfil Dietista y GUI Perfil Dietista Pass
    gui.conectarAcp(dietista.uiPD.buttonBox, dietista.AceptarPass)

#Conexion button Cancelar de Perfil Dietista Pass y GUI Perfil Dietista
    gui.conectarRej(dietista.uiPDP.buttonBox, dietista.WindowPDiet.show)

#Comprobacion de Perfil Dietista y password
    gui.conectarAcp(dietista.uiPDP.buttonBox, lambda: dietista.Aceptar(ui))
    gui.conectarAcp(dietista.uiPDP.buttonBox, lambda: receta.MostrarRecetas(dietista,ui))

#Declaraciones de GUI Anadir Ingredientes
    receta.VentanaAnadirIngr()

#Conexion de button Anadir y GUI Anadir Ingredientes
    #Para Nueva Receta
    gui.conectarClic(receta.uiNR.push_Anadir, lambda: receta.MostrarAnadirIngrediente(receta.uiAI, receta.WindowAIngr))

    #Para Modificar Receta
    gui.conectarClic(receta.uiMR.push_Anadir, lambda: receta.MostrarAnadirIngrediente(receta.uiAI, receta.WindowAIngr))

#Declaraciones de GUI Nuevo Ingrediente
    ingrediente = Ingrediente()
    ingrediente.VentanaNuevo()
    ingrediente.VentanaModificar()

#Conexion de button Nuevo de GUI Anadir Ingredientes y GUI Nuevo Ingrediente
    gui.conectarClic(receta.uiAI.push_Nuevo, ingrediente.NuevoIngr)

#Conexion de combo medida de GUI Nuevo Ingrediente y lineEdit ud | gr | ml
    gui.conectarIndex(ingrediente.uiNI.combo_udgr, lambda: ingrediente.Cantidad(ingrediente.uiNI))
    gui.conectarIndex(ingrediente.uiMI.combo_udgr, lambda: ingrediente.Cantidad(ingrediente.uiMI))

#Conexion de buttonBox Aceptar y treeWidget de Anadir Ingrediente con BBDD
    gui.conectarAcp(ingrediente.uiNI.buttonBox, lambda: ingrediente.GuardarIngrediente(receta))
    gui.conectarAcp(ingrediente.uiNI.buttonBox, lambda: ingrediente.RecogerPreferencias(objetos))

#Conexion de button Modificar de GUI Anadir Ingredientes y GUI Nuevo Ingrediente
    gui.conectarClic(receta.uiAI.push_Modificar, lambda: receta.ModificarIngr(ingrediente))
    gui.conectarAcp(ingrediente.uiMI.buttonBox, lambda: ingrediente.ModificarIngrediente(receta))

#Conexion de Aceptar de Añadir Ingrediente y treeWidget de Nueva Receta
    gui.conectarAcp(receta.uiAI.buttonBox, lambda: receta.AgregarIngr(receta.uiNR))

#Conexion de Aceptar de Añadir Ingrediente y treeWidget de Modificar  Receta
    gui.conectarAcp(receta.uiAI.buttonBox, lambda: receta.AgregarIngr(receta.uiMR))

#Conexion de push_Eliminar de GUI Nueva Receta y treeWidget
    gui.conectarClic(receta.uiNR.push_Eliminar, lambda: receta.EliminarIngr(receta.uiNR))

#Conexion de push_Eliminar de GUI Modificar Receta y treeWidget
    gui.conectarClic(receta.uiMR.push_Eliminar, lambda: receta.EliminarIngr(receta.uiMR))

#Conexion de Aceptar de GUI Nueva Receta, bbdd y treeWidget de MainWindow
    gui.conectarAcp(receta.uiNR.buttonBox, lambda: receta.GuardarReceta(receta.uiNR ,dietista))
    #Añadir Receta a treeWidget recetas
    gui.conectarAcp(receta.uiNR.buttonBox, lambda: receta.MostrarRecetas(dietista,ui))

#Conexion de Aceptar de GUI Modificar Receta, bbdd y treeWidget de MainWindow
    gui.conectarAcp(receta.uiMR.buttonBox, lambda: receta.GuardarReceta(receta.uiMR ,dietista))
    #Añadir Receta a treeWidget recetas
    gui.conectarAcp(receta.uiMR.buttonBox, lambda: receta.MostrarRecetas(dietista,ui))
    #Borrar Receta de treeWidget recetas
    gui.conectarAcp(receta.uiER.buttonBox, lambda: receta.MostrarRecetas(dietista,ui))

#Conexion de Rechazar de GUI Modificar Receta y bbdd
    def CancelarModif(receta, dietista):
        receta.GuardarReceta(receta.uiMR, dietista)
        receta.SeleccionarReceta(dietista)

    gui.conectarRej(receta.uiMR.buttonBox, lambda: CancelarModif(receta, dietista))

#Conexion de Aceptar uiNP2 y guardar Paciente
    gui.conectarAcp(paciente.uiNP2.buttonBox, lambda: paciente.GuardarPaciente(dietista))

#Conexion boton Informacion Medica y Ventana Info Med
    paciente.VentanaInfoMed()

    gui.conectarClic(ui.pushButton_InfMed, paciente.AbrirInfoMed)
    gui.conectarClic(ui.toolButton, paciente.AbrirInfoMed)

#Conexion de Anadir Ventana Informacion Medica y dialogo abrir Archivo
    gui.conectarClic(paciente.uiInfoM.pushButton_Anadir, paciente.abrirDialogo)

#Conexion de Eliminar de Ventana Informacion Medica y treeWidget
    gui.conectarClic(paciente.uiInfoM.pushButton_Eliminar, paciente.EliminarAnalitica)

#Conexion boton Ver Analitica de Ventana Informacion Medica y PDF
    gui.conectarClic(paciente.uiInfoM.pushButton, paciente.VerAnalitica)

#Conexion boton añadirEP de Ventana Informacion Medica y Dialogo Enfermedades
    paciente.VentanaEnfermedad()

    gui.conectarClic(paciente.uiInfoM.pushButton_AnadirEP, paciente.MostrarListadoEnf)

#Conexion boton Nuevo de Ventana Enfer y Patologias y Dialogo Agregar Enfermedad
    paciente.VentanaNEnfermedad()

    gui.conectarClic(paciente.uiEnfer.push_Nuevo, paciente.MostrarVentanaNEnfermedad)

#Conexion boton añadirEP de Ventana Informacion Medica y Dialogo Enfermedades
    paciente.VentanaNEnfIngred()

    gui.conectarClic(paciente.uiNEnfer.push_Anadir, lambda: paciente.MostrarVentanaSelEIngr(receta))

#Conexion boton Aceptar Ventana Inf Medica y bbdd por trat farma
    gui.conectarAcp(paciente.uiInfoM.buttonBox, lambda: paciente.GuardarTrat(ui))
    gui.conectarAcp(paciente.uiInfoM.buttonBox, lambda: paciente.ExcluirRecetasEnf(dietista,receta,ui))
    gui.conectarAcp(paciente.uiAP.buttonBox, lambda: paciente.ExcluirRecetasEnf(dietista,receta,ui))

#Conexion de Añadir en tratamiento de apoyo y GUI trat
    paciente.VentanaTrataApoyo()

    gui.conectarClic(ui.pushButton_Anadir, paciente.MostrarVentanaTratApoyo)
    gui.conectarAcp(paciente.uiNTA.buttonBox, lambda: paciente.MostrarTratA(ui))
    gui.conectarClic(ui.pushButton_Elim, lambda: paciente.ElimItem(ui))

#Conexion boton Aceptar de Selec Ingredientes de Enfermedades y Dialogo Nueva Enfermedad
    gui.conectarAcp(paciente.uiNEI.buttonBox, paciente.SeleccionarEnfIngred)

#Conexion boton Eliminar Dialogo Nueva Enfermedad y treeWidget
    gui.conectarClic(paciente.uiNEnfer.push_Elim, lambda: paciente.EliminarIngredEnf(paciente.uiNEnfer))

#Conexion boton Aceptar Dialogo Nueva Enfermedad y Dialogo Enfermedades
    gui.conectarAcp(paciente.uiNEnfer.buttonBox, paciente.CrearEnfermedad)

#Conexion boton Eliminar Dialogo Enfermedades y treeWidget
    gui.conectarClic(paciente.uiEnfer.push_Elim, paciente.ElimEnfBBDD)
    gui.conectarClic(paciente.uiEnfer.push_Elim, lambda: paciente.EliminarIngredEnf(paciente.uiEnfer))

#Conexion boton Aceptar Dialogo Nueva Enfermedad y Dialogo Enfermedades
    gui.conectarAcp(paciente.uiEnfer.buttonBox, paciente.AnadirEnfermedad)

#Conexion boton Eliminar Dialogo Enfermedades y treeWidget
    gui.conectarClic(paciente.uiInfoM.pushButton_EliminarEP, lambda: paciente.EliminarEP(paciente.uiInfoM))

#Conexion de boton Informacion General y Gui ventana Info Gen
    paciente.VentanaInfoGen()

    gui.conectarClic(ui.pushButton_InfG, paciente.MostrarInfoGen)

#Conexion de boton Aceptar de InfoGen y bbdd
    gui.conectarAcp(paciente.uiInfoG.buttonBox, paciente.GuardarInfoG)

#Conexion de boton Diario Dietetico y Gui ventana Diario Dietetico
    paciente.VentanaDiarioD()

    gui.conectarClic(ui.pushButton_DiDiet, paciente.AbrirDiarioDiet)

#Conexion de Anadir Ventana Diario Dietetico y dialogo abrir Archivo
    gui.conectarClic(paciente.uiDiarioD.pushButton_Anadir, paciente.abrirDialogoD)

#Conexion de Eliminar de Ventana Diario Dietetico y treeWidget
    gui.conectarClic(paciente.uiDiarioD.pushButton_Eliminar, paciente.EliminarDiario)

#Conexion boton Ver Analitica de Ventana Diario Dietetico y PDF
    gui.conectarClic(paciente.uiDiarioD.pushButton_Ver, paciente.VerDiario)

#Conexion de boton Recordatorio 24h y Gui ventana Recordatorio
    paciente.VentanaRecordatorio()

    gui.conectarClic(ui.pushButton_Record, paciente.AbrirRecordatorio)

#Conexion de Anadir Ventana Recordatorio y dialogo abrir Archivo
    gui.conectarClic(paciente.uiRecordatorio.pushButton_Anadir, paciente.abrirDialogoR)

#Conexion de Eliminar de Ventana Recordatorio y treeWidget
    gui.conectarClic(paciente.uiRecordatorio.pushButton_Eliminar, paciente.EliminarRecordatorio)

#Conexion boton Ver Analitica de Ventana Recordatorio y PDF
    gui.conectarClic(paciente.uiRecordatorio.pushButton_Ver, paciente.VerRecordatorio)

#Conexion boton Formulario de Ventana Diario Dietetico e imprimir
#Conexion boton Diario Dietetico de Nuevo Paciente e imprimir
    gui.conectarClic(paciente.uiDiarioD.pushButton_Form, paciente.ImprimirDiarioD)
    gui.conectarClic(paciente.uiNP2.pushButton_DiDiet, paciente.ImprimirDiarioD)

#Conexion boton Formulario de Ventana Recordatorio e imprimir
#Conexion boton Recordatorio 24h de Nuevo Paciente e imprimir
    gui.conectarClic(paciente.uiRecordatorio.pushButton_Form, paciente.ImprimirRecordatorio)
    gui.conectarClic(paciente.uiNP2.pushButton_Record, paciente.ImprimirRecordatorio)

#Conexion de boton Cuestionario de Frecuencia de Nuevo Paciente y Gui CuestFrec
#Conexion boton Cuestionario de Frecuencia y Gui Cuestionario de Frecuencia
    paciente.VentanaCuestFrec()

    gui.conectarClic(paciente.uiNP2.pushButton_Cuest, lambda: paciente.AbrirCuestionarioFrec(objetos))
    gui.conectarClic(ui.pushButton_Cuest, lambda: paciente.AbrirCuestionarioFrec(objetos))
    gui.conectarClic(ui.pushButton_Cuest, lambda: paciente.MostrarPreferencias(objetos, ingrediente))

#Conexion de boton Aceptar de Cuestionario de Frecuencia y bbdd
    gui.conectarAcp(paciente.uiCuestFrec.buttonBox, lambda: paciente.GuardarCuestionarioFrec(objetos))

#Conexion de TableWidget segun nº ingestas y lineEdits correspondientes
    gui.conectarClic(ui.push_Kcal_6, lambda: paciente.CalcularKcalDia(ui))
    gui.conectarClic(ui.push_Kcal_5, lambda: paciente.CalcularKcalDia(ui))
    gui.conectarClic(ui.push_Kcal_4, lambda: paciente.CalcularKcalDia(ui))
    gui.conectarClic(ui.push_Kcal_3, lambda: paciente.CalcularKcalDia(ui))

#Conexion de Perdida de materia grasa y perdida de liquidos
    def PMG():
        PL = 100 - ui.doubleSpin_PMG.value()
        ui.doubleSpin_PL.setValue(PL)
    def PL():
        PMG = 100 - ui.doubleSpin_PL.value()
        ui.doubleSpin_PMG.setValue(PMG)

    gui.conectarValue(ui.doubleSpin_PMG, PMG)
    gui.conectarValue(ui.doubleSpin_PL, PL)

#Conexion de Accion Guardar y bbdd
    gui.conectarAct(ui.actionGuardar, lambda: paciente.AccionGuardar(ui))

#Conexion de boton Ver Recetas y Ventana Ver Recetas
    paciente.VentanaVerRecetas()

    gui.conectarClic(ui.push_VerRecetas, paciente.VerRecetas)

#Conexion de boton Ver de Ver Recetas y Visor de Recetas
    gui.conectarClic(paciente.uiVRec.Button_Ver, lambda: paciente.Ver(ui))

#Conexion de boton Utilizar de Ver Recetas y treeWidget de MainWindow
    gui.conectarClic(paciente.uiVRec.Button_Utilizar, lambda: paciente.Utilizar(ui))

#Conexion de Accion Imprimir e imprimir pdf
    gui.conectarAct(ui.actionImprimir, lambda: paciente.Imprimir(ui, dietista))

#Conexion de Acerca de y Ventana de Acerca de
    gui.VentanaAcercade()
    
    gui.conectarAct(ui.actionAcerca_de, gui.WindowAcercade.show)

#Conexion de Manual y Manual de usuario
    gui.conectarAct(ui.actionManual, gui.MostrarManual)

#Conexion de Manual y Manual de usuario
    gui.conectarClic(gui.uiA.pushButton_Licencia, gui.MostrarLicencia)

#Conexion de Creditos y Ventana de Creditos
    gui.VentanaCreditos()
    
    gui.conectarClic(gui.uiA.pushButton_Credit, gui.WindowCreditos.show)

#Cerrar cualquier ventana si se cierra la principal
    def CerrarVentanas():
        QtGui.QApplication.closeAllWindows()

    gui.conectarAct(ui.actionSalir, CerrarVentanas)

#Finalizacion del programa
    sys.exit(app.exec_())