Пример #1
0
 def __init__(self, tabla, *args):
     QWidget.__init__(self, *args)
     self.generador = GeneradorReporte()
     self.layout_reportes = QVBoxLayout()
     self.layout_reportes.addWidget(QLabel("Cursos Disponibles:"))
     self.Estudiantes = tabla
     self.layout_reportes.addWidget(self.Estudiantes)
     self.boton_uno = QHBoxLayout()
     self.manejador = ManejadorBD()
     self.boton_uno.addWidget(QLabel("                               "))
     self.tiposReportes = [
         "Lista de Estudiantes", "Lista de asistencia", "Libretas",
         "Promociones"
     ]
     self.comboReportes = QComboBox()
     self.comboReportes.addItems(self.tiposReportes)
     self.boton_uno.addWidget(QLabel("Tipos de Reportes:"))
     self.boton_uno.addWidget(self.comboReportes)
     self.boton_uno.addWidget(QLabel("                               "))
     self.boton_uno.addWidget(QLabel("                               "))
     self.botonReportes = QPushButton("Generar Reporte")
     self.connect(self.botonReportes, SIGNAL("clicked()"),
                  self.initReportes)
     self.boton_uno.addWidget(self.botonReportes)
     self.boton_uno.addWidget(QLabel("                               "))
     self.boton_uno.addWidget(QLabel("                               "))
     self.layout_reportes.addLayout(self.boton_uno)
     self.setLayout(self.layout_reportes)
Пример #2
0
	def __init__(self,*args):
			QWidget.__init__(self,*args)
			self.setGeometry(100,50,self.dimension_x,self.dimension_y)
			self.contenedor = QVBoxLayout() #layout principal de esta gui, los widgets se agregan de forma horizontal
			self.setLayout(self.contenedor)
			self.manejador = ManejadorBD()
			
			#Tabla alumnos
			self.materiasGrid=MyTable(self)
			self.headers = [u"Código", "Nombre"]
			self.materiasGrid.setHeader(self.headers)

			
			
			
			self.layoutMaterias1=QHBoxLayout()
			self.layoutMateria1Sub = QVBoxLayout()
			self.layoutMaterias2=QVBoxLayout()
			self.layoutMateria21=QFormLayout()
			self.layoutMateria22=QHBoxLayout()
			self.layoutMaterias1.addLayout(self.layoutMateria1Sub)
			self.layoutMateria1Sub.addWidget(QLabel("Materias"))
			self.layoutMateria1Sub.addWidget(self.materiasGrid)

			#Agrego datos a la tabla
			self.materiasGrid.addTable(self.manejador.consultarMaterias())
			
			
			#--definicion de contenedores de cada pestaña--#

			self.layoutMaterias2.addLayout(self.layoutMateria21)
			self.layoutMaterias2.addLayout(self.layoutMateria22)


			
			self.nombreMateria = QLineEdit()
			self.btnCrea=QPushButton("Crear")
			self.btnActualizar=QPushButton("Actualizar")
			self.btnEliminar=QPushButton("Eliminar")


			self.contenedor.addLayout(self.layoutMaterias1)
			self.contenedor.addLayout(self.layoutMaterias2)
			self.layoutMateria21.addRow("Nombre: ",self.nombreMateria)
			self.layoutMateria22.addWidget(self.btnCrea)
			self.layoutMateria22.addWidget(self.btnActualizar)
			self.layoutMateria22.addWidget(self.btnEliminar)

			
		


#app = QApplication(sys.argv)
#vista1 = VistaFacturacion()
#vista1.show()
#app.exec_()
class VistasMateria(QWidget):
	dimension_x=400
	dimension_y=500

	def __init__(self,*args):
			QWidget.__init__(self,*args)
			self.setGeometry(100,50,self.dimension_x,self.dimension_y)
			self.contenedor = QVBoxLayout() #layout principal de esta gui, los widgets se agregan de forma horizontal
			self.setLayout(self.contenedor)
			self.manejador = ManejadorBD()
			
			#Tabla alumnos
			self.materiasGrid=MyTable(self)
			self.headers = [u"Código", "Nombre"]
			self.materiasGrid.setHeader(self.headers)

			
			
			
			self.layoutMaterias1=QHBoxLayout()
			self.layoutMateria1Sub = QVBoxLayout()
			self.layoutMaterias2=QVBoxLayout()
			self.layoutMateria21=QFormLayout()
			self.layoutMateria22=QHBoxLayout()
			self.layoutMaterias1.addLayout(self.layoutMateria1Sub)
			self.layoutMateria1Sub.addWidget(QLabel("Materias"))
			self.layoutMateria1Sub.addWidget(self.materiasGrid)

			#Agrego datos a la tabla
			self.materiasGrid.addTable(self.manejador.consultarMaterias())
			
			
			#--definicion de contenedores de cada pestaña--#

			self.layoutMaterias2.addLayout(self.layoutMateria21)
			self.layoutMaterias2.addLayout(self.layoutMateria22)


			
			self.nombreMateria = QLineEdit()
			self.btnCrea=QPushButton("Crear")
			self.btnActualizar=QPushButton("Actualizar")
			self.btnEliminar=QPushButton("Eliminar")


			self.contenedor.addLayout(self.layoutMaterias1)
			self.contenedor.addLayout(self.layoutMaterias2)
			self.layoutMateria21.addRow("Nombre: ",self.nombreMateria)
			self.layoutMateria22.addWidget(self.btnCrea)
			self.layoutMateria22.addWidget(self.btnActualizar)
			self.layoutMateria22.addWidget(self.btnEliminar)

			
		


#app = QApplication(sys.argv)
#vista1 = VistaFacturacion()
#vista1.show()
#app.exec_()
Пример #4
0
    def __init__(self, usuarioNombre, *args):
        QWidget.__init__(self, *args)
        self.setGeometry(100, 50, self.dimension_x, self.dimension_y)
        self.setWindowTitle("Opciones Profesor")
        self.showMaximized()
        self.main_widget = QWidget(self)
        self.contenedor = QVBoxLayout(
        )  #layout principal de esta gui, los widgets se agregan de forma horizontal
        self.form_layout = QFormLayout()  #layout interno

        self.usuarioNombre = usuarioNombre
        self.opciones = QTabWidget(
        )  #opciones disponibles del profesor: Consultar Notas,Generar Reportes e Ingresar Calificaciones

        self.tablas = [MyTable(self), MyTable(self), MyTable(self)]
        self.manejador = ManejadorBD()
        self.resultados = self.manejador.obtenerCursosPorProfesor(
            self.usuarioNombre
        )  #obtiene los cursos del profesor que ingreso al sistema

        self.consultas = VistaConsulta(self.tablas[0])
        self.calificaciones = VistaCalificaciones(self.tablas[1])
        self.reportes = VistaReporte(self.tablas[2])

        #muestra los cursos asignados al profesor
        for tabla_actual in self.tablas:
            tabla_actual.setHeader([
                "Materia Asignada", "Codigo", "Curso", "Paralelo",
                u"Año Lectivo"
            ])  #establece las cabezeras de las tablas
            tabla_actual.addTable(
                self.resultados)  #agrega los resultados obtenidos a la tabla

        self.opciones.addTab(self.consultas, "Consultas")
        self.opciones.addTab(self.reportes, "Generar Reportes")
        self.opciones.addTab(self.calificaciones, "Insertar Calificaciones")

        self.contenedor.addWidget(QLabel("		"))
        self.contenedor.addWidget(QLabel("Usuario: " + usuarioNombre))
        self.contenedor.addWidget(QLabel("		"))
        self.contenedor.addWidget(self.opciones)

        self.main_widget.setLayout(self.contenedor)
        self.setCentralWidget(self.main_widget)
Пример #5
0
 def __init__(self, curso, materia, *args):
     QWidget.__init__(self, *args)
     self.layout_examen = QVBoxLayout()
     self.layout_examen.addWidget(QLabel("Lista de Estudiantes:"))
     self.Estudiantes = MyTable(self)
     self.manejador = ManejadorBD()
     self.idCurso = curso
     self.materia = materia
     resultados = self.manejador.consultarExamenesPorCurso(
         self.idCurso, self.materia)
     self.Estudiantes.addTable(self.ordenarDatos(resultados))
     self.Estudiantes.setHeader([
         "Matricula", "Apellidos", "Nombres", "Supletorio", "Remedial",
         "De Gracia"
     ])
     self.Estudiantes.hideColumn(0)
     self.boton = QPushButton("Guardar")
     self.layout_examen.addWidget(self.Estudiantes)
     self.layout_examen.addWidget(self.boton)
     self.boton.clicked.connect(self.guardarNotas)
     self.setLayout(self.layout_examen)
Пример #6
0
    def __init__(self, numQuimestre, curso, materia, *args):
        QWidget.__init__(self, *args)
        self.layout_uno = QVBoxLayout()
        self.tab_uno = QTabWidget()  #parciales
        self.parciales_uno = [QWidget(),
                              QWidget(),
                              QWidget(),
                              QWidget()
                              ]  #pestañas con los parciales y el examen
        self.layouts = [
            QVBoxLayout(),
            QVBoxLayout(),
            QVBoxLayout(),
            QVBoxLayout()
        ]  #layouts para cada pestaña

        self.layoutHorizontal = [QHBoxLayout(),
                                 QHBoxLayout(),
                                 QHBoxLayout()]  #layouts para los espacios

        self.manejador = ManejadorBD()
        self.botonesGuardar = [
            QPushButton("Guardar"),
            QPushButton("Guardar"),
            QPushButton("Guardar"),
            QPushButton("Guardar")
        ]  #botones para guardar las notas que se ingresen
        self.idCurso = str(curso)
        self.materia = str(materia)
        self.numQuimestre = numQuimestre
        self.initTab()
        self.setLayout(self.layout_uno)
        self.botonesGuardar[0].clicked.connect(
            lambda: self.guardarNotasActividades(1))
        self.botonesGuardar[1].clicked.connect(
            lambda: self.guardarNotasActividades(2))
        self.botonesGuardar[2].clicked.connect(
            lambda: self.guardarNotasActividades(3))
        self.botonesGuardar[3].clicked.connect(
            lambda: self.guardarNotasExamenes())
Пример #7
0
class VistaExamenes(QWidget):
    def __init__(self, curso, materia, *args):
        QWidget.__init__(self, *args)
        self.layout_examen = QVBoxLayout()
        self.layout_examen.addWidget(QLabel("Lista de Estudiantes:"))
        self.Estudiantes = MyTable(self)
        self.manejador = ManejadorBD()
        self.idCurso = curso
        self.materia = materia
        resultados = self.manejador.consultarExamenesPorCurso(
            self.idCurso, self.materia)
        self.Estudiantes.addTable(self.ordenarDatos(resultados))
        self.Estudiantes.setHeader([
            "Matricula", "Apellidos", "Nombres", "Supletorio", "Remedial",
            "De Gracia"
        ])
        self.Estudiantes.hideColumn(0)
        self.boton = QPushButton("Guardar")
        self.layout_examen.addWidget(self.Estudiantes)
        self.layout_examen.addWidget(self.boton)
        self.boton.clicked.connect(self.guardarNotas)
        self.setLayout(self.layout_examen)

    def ordenarDatos(self, lista):
        resultados = []
        i = 0
        acumular = 1
        while i < len(lista):
            registro_actual = lista[i]
            registro_nuevo = []
            registro_nuevo.append(registro_actual[0])
            registro_nuevo.append(registro_actual[1])
            registro_nuevo.append(registro_actual[2])
            registro_nuevo.append(registro_actual[4])
            j = 0
            for j in range(2):
                registro_siguiente = lista[acumular + j]
                registro_nuevo.append(registro_siguiente[4])
            resultados.append(registro_nuevo)
            acumular = acumular + 3
            i = acumular
        return resultados

    def guardarNotas(self):
        resultados = []
        for i in range(self.Estudiantes.getSize()):
            registro = self.Estudiantes.getRegister(i)
            for atributo in registro:
                resultados.append(unicode(atributo))
Пример #8
0
 def __init__(self, tablaDatos, *args):
     QWidget.__init__(self, *args)
     self.layout_calificaciones = QVBoxLayout()
     self.showMaximized()
     self.layout_calificaciones.addWidget(QLabel("Cursos Disponibles:"))
     self.cursos = tablaDatos
     self.manejador = ManejadorBD()
     self.layout_calificaciones.addWidget(self.cursos)
     self.layout_dos = QHBoxLayout()
     self.layout_dos.addWidget(QLabel("                               "))
     self.layout_dos.addWidget(QLabel("                               "))
     self.botonCalificaciones = QPushButton("Insertar Calificaciones")
     self.connect(self.botonCalificaciones, SIGNAL("clicked()"),
                  self.initCalificaciones)
     self.layout_dos.addWidget(self.botonCalificaciones)
     self.layout_dos.addWidget(QLabel("                               "))
     self.layout_dos.addWidget(QLabel("                               "))
     self.layout_calificaciones.addLayout(self.layout_dos)
     self.setLayout(self.layout_calificaciones)
     self.i = 0
Пример #9
0
class VistaPersona(QWidget):
    dimension_x = 400
    dimension_y = 500

    def __init__(self, *args):
        QWidget.__init__(self, *args)
        self.setGeometry(100, 50, self.dimension_x, self.dimension_y)
        self.contenedor = QVBoxLayout(
        )  #layout principal de esta gui, los widgets se agregan de forma horizontal
        self.setLayout(self.contenedor)
        self.Personas = MyTable(self)
        self.layoutPersona = QFormLayout()
        self.layoutBotones = QHBoxLayout()
        self.layoutBusqueda = QFormLayout()
        #definicion cajas de texto
        self.cedula = QLineEdit()
        self.nombre = QLineEdit()
        self.apellido = QLineEdit()
        self.sexo = QComboBox()
        self.sexo.addItems(["Masculino", "Femenino"])
        self.estadoCivil = QComboBox()
        self.lEstadoCivil = [
            "Soltero", "Casado", "Divorsiado", "Union Libre", "Viudo"
        ]
        self.estadoCivil.addItems(self.lEstadoCivil)
        self.ocupacion = QLineEdit()
        self.lugarTrabajo = QLineEdit()
        self.telefono = QLineEdit()
        self.direccion = QLineEdit()
        self.calendarioFecha = QCalendarWidget()
        #botones
        self.btnGuardar = QPushButton("Guardar")
        self.btnGuardar.setIcon(QIcon("Imagenes/guardar.jpg"))
        self.btnCancelar = QPushButton("Cancelar")
        self.btnSeleccionar = QPushButton("Seleccionar")
        #definicion objetos busqueda
        self.comboBusqueda = QComboBox()
        self.txtBusqueda = QLineEdit()
        self.comboBusqueda.addItems([u"cédula", "Nombres", "Apellidos"])

        # llenamos el layout de los botones
        self.layoutBotones.addWidget(self.btnGuardar)
        self.layoutBotones.addWidget(self.btnCancelar)

        #creacion de formulario
        self.layoutPersona.addRow("cedula: ", self.cedula)
        self.cedula.setEnabled(False)
        self.layoutPersona.addRow("Nombre: ", self.nombre)
        self.layoutPersona.addRow("Apellido: ", self.apellido)
        self.layoutPersona.addRow("sexo: ", self.sexo)
        self.layoutPersona.addRow("Fecha Nacimiento", self.calendarioFecha)
        self.layoutPersona.addRow("Estado Civil: ", self.estadoCivil)
        self.layoutPersona.addRow("Ocupacion: ", self.ocupacion)
        self.layoutPersona.addRow("Lugar Trabajo: ", self.lugarTrabajo)
        self.layoutPersona.addRow("Telefono: ", self.telefono)
        self.layoutPersona.addRow("Direccion: ", self.direccion)

        #creacion de layout busqueda
        self.layoutBusqueda.addRow(self.comboBusqueda, self.txtBusqueda)

        #agregamos los layout a la ventana
        self.contenedor.addLayout(self.layoutBusqueda)
        self.contenedor.addWidget(self.Personas)
        self.contenedor.addWidget(self.btnSeleccionar)
        self.contenedor.addLayout(self.layoutPersona)
        self.contenedor.addLayout(self.layoutBotones)

        #tablas
        self.manejador = ManejadorBD()
        self.headers = [
            u"Cédula", "Nombres", "Apellidos", "Sexo", "Fecha de Nacimiento",
            "Estado Civil", u"Ocupación", "Lugar de Trabajo", u"Teléfono",
            u"Dirección"
        ]
        self.Personas.setHeader(self.headers)
        self.Personas.addTable(self.manejador.consultarPersonas())

        self.txtBusqueda.textChanged.connect(
            self.Personas.on_lineEdit_textChanged)
        self.comboBusqueda.currentIndexChanged.connect(
            self.Personas.on_comboBox_currentIndexChanged)
        self.modoSeleccion()
        self.connect(self.btnSeleccionar, SIGNAL("clicked()"),
                     self.clik_Seleccionar)
        self.connect(self.btnGuardar, SIGNAL("clicked()"), self.clik_Guardar)
        self.connect(self.btnCancelar, SIGNAL("clicked()"), self.clik_Cancelar)
        self.P = []

    def seleccionarPersona(self):
        self.P = self.Personas.getSelectedRegister()

    def modoSeleccion(self):
        self.btnCancelar.setEnabled(False)
        self.btnGuardar.setEnabled(False)
        self.btnSeleccionar.setEnabled(True)

    def modoEdicion(self):
        self.btnCancelar.setEnabled(True)
        self.btnGuardar.setEnabled(True)
        self.btnSeleccionar.setEnabled(False)

    def clik_Seleccionar(self):
        self.seleccionarPersona()
        if (len(self.P) != 0):
            persona = self.P[len(self.P) - 1]
            self.llenarPersona(persona)
            self.P = []
            self.modoEdicion()
        else:
            QMessageBox.about(self, 'Error!', u'Seleccione una Persona')

    def llenarPersona(self, l):
        self.cedula.setText(l[0])
        self.nombre.setText(l[1])
        self.apellido.setText(l[2])
        if (l[3] == "Masculino"):
            self.sexo.setCurrentIndex(0)
        else:
            self.sexo.setCurrentIndex(1)
        # se necesita un QDate
        #self.calendarioFecha.setSelectedDate (l[4])
        if (l[5] == self.lEstadoCivil[0]):
            self.estadoCivil.setCurrentIndex(0)
        elif (l[5] == self.lEstadoCivil[1]):
            self.estadoCivil.setCurrentIndex(1)
        elif (l[5] == self.lEstadoCivil[2]):
            self.estadoCivil.setCurrentIndex(2)
        elif (l[5] == self.lEstadoCivil[3]):
            self.estadoCivil.setCurrentIndex(3)
        elif (l[5] == self.lEstadoCivil[4]):
            self.estadoCivil.setCurrentIndex(4)
        self.ocupacion.setText(l[6])
        self.lugarTrabajo.setText(l[7])
        self.telefono.setText(l[8])
        self.direccion.setText(l[9])

    def limpiar(self):
        self.cedula.setText("")
        self.nombre.setText("")
        self.apellido.setText("")
        self.sexo.setCurrentIndex(0)
        self.estadoCivil.setCurrentIndex(0)
        self.ocupacion.setText("")
        self.lugarTrabajo.setText("")
        self.telefono.setText("")
        self.direccion.setText("")

    def clik_Cancelar(self):
        self.modoSeleccion()
        self.limpiar()

    def clik_Guardar(self):
        self.fecha = self.calendarioFecha.selectedDate()
        datos = (self.cedula.displayText(), self.nombre.displayText(),
                 self.apellido.displayText(), self.sexo.currentText(),
                 self.fecha, self.estadoCivil.currentText(),
                 self.ocupacion.displayText(), self.lugarTrabajo.displayText(),
                 self.telefono.displayText(), self.direccion.displayText())
        self.modoSeleccion()
        self.limpiar()
        try:
            self.manejador.actualizarPersona(datos)
            QMessageBox.about(self, 'Informacion!',
                              u'Se ha actualizado correctamente la persona')
            self.Actualizar_Personas()
        except:
            QMessageBox.about(self, 'Error!',
                              u'No se ha podido actualizar a la Persona')

    def Actualizar_Personas(self):
        self.Personas.deleteData()
        self.Personas.addTable(self.manejador.consultarPersonas())
Пример #10
0
class VistaNotasPorCurso(QWidget):
    def __init__(self, curso, *args):
        QWidget.__init__(self, *args)
        self.setWindowTitle("Consulta Notas")
        self.showMaximized()
        self.cursoSeleccionado = curso
        self.materia = self.cursoSeleccionado[0]
        self.idCurso = self.cursoSeleccionado[1]
        primerQuimestre = 0
        segundoQuimestre = 1
        examenes = 2
        self.manejador = ManejadorBD()
        self.contenedor = QVBoxLayout()

        #definicion de las tablas en donde se insertaran los datos
        self.Estudiantes = [
            MyTable(self), MyTable(self),
            MyTable(self)
        ]  #grid 0 para primer quimestre, 1 para segundo y 2 para los examenes
        self.manejador = ManejadorBD()

        #Primer Quimestre
        self.Estudiantes[primerQuimestre].setHeader([
            "Numero Matricula", "Apellidos", "Nombres", "Primer Parcial ",
            "Segundo Parcial ", "Tercer Parcial", "Examen", "Promedio"
        ])
        self.Estudiantes[primerQuimestre].hideColumn(
            0)  #esconde la columna del numero de matricula
        self.notas_parciales_uno = self.manejador.consultarNotasParcial(
            self.idCurso, self.materia, 1)
        self.examen_quimestre_uno = self.manejador.consultarExamenPorQuimestre(
            self.idCurso, self.materia, 1)
        self.notas_quimestre_uno = self.unir(self.notas_parciales_uno,
                                             self.examen_quimestre_uno)
        self.Estudiantes[primerQuimestre].addTable(self.notas_quimestre_uno)
        self.Estudiantes[primerQuimestre].setEditable(False)

        #Segundo Quimestre
        self.Estudiantes[segundoQuimestre].setHeader([
            "Numero Matricula", "Apellidos", "Nombres", "Primer Parcial ",
            "Segundo Parcial ", "Tercer Parcial", "Examen", "Promedio"
        ])
        self.Estudiantes[segundoQuimestre].hideColumn(
            0)  #esconde la columna del numero de matricula
        self.notas_parciales_dos = self.manejador.consultarNotasParcial(
            self.idCurso, self.materia, 2)
        self.examen_quimestre_dos = self.manejador.consultarExamenPorQuimestre(
            self.idCurso, self.materia, 2)
        self.notas_quimestre_dos = self.unir(self.notas_parciales_dos,
                                             self.examen_quimestre_dos)
        self.Estudiantes[segundoQuimestre].addTable(self.notas_quimestre_dos)
        self.Estudiantes[segundoQuimestre].setEditable(False)

        self.tab_uno = QTabWidget()
        self.pestanias = [QWidget(), QWidget(), QWidget()]  #pestañas

        #layouts
        self.layout_uno = QVBoxLayout()
        self.layout_uno.addWidget(self.Estudiantes[primerQuimestre])
        self.pestanias[primerQuimestre].setLayout(self.layout_uno)
        self.layout_dos = QVBoxLayout()
        self.layout_dos.addWidget(self.Estudiantes[segundoQuimestre])
        self.pestanias[segundoQuimestre].setLayout(self.layout_dos)

        self.tab_uno.addTab(self.pestanias[primerQuimestre],
                            "Notas Primer Quimestre")
        self.tab_uno.addTab(self.pestanias[segundoQuimestre],
                            "Notas Segundo Quimestre")
        self.tab_uno.addTab(self.pestanias[examenes], "Notas Examenes")

        self.contenedor.addWidget(
            QLabel("Materia: " + self.cursoSeleccionado[0]))
        self.contenedor.addWidget(self.tab_uno)
        self.setLayout(self.contenedor)

    def unir(self, notas_parcial, examenes):
        #el objetivo de esta funcion es reubicar los datos a ser mostrados en el grid
        registro_actual = []
        registro_nuevo = []
        resultados = []
        i = 0
        for registro_actual in notas_parcial:
            registro_nuevo = []
            for i in range(
                    6
            ):  #registro actual tiene los campos: matricula,apellidos,nombres,notaParcial1,notaParcial2,notaParcial3
                registro_nuevo.append(
                    registro_actual[i])  #copia los datos en una lista nueva
            matricula_estudiante = registro_actual[
                0]  #matricula del estudiante
            examen, notaQuimestre = self.obtenerInfoQuimestre(
                matricula_estudiante, examenes)
            if examen != None and notaQuimestre != None:
                registro_nuevo.append(examen)  #se añade la nota del examene
                registro_nuevo.append(
                    notaQuimestre)  #se añade el promedio del quimestre
            resultados.append(registro_nuevo)
        return resultados

    def obtenerInfoQuimestre(self, matricula_estudiante, examenes):
        #esta funcion va a buscar entre los examenes la matricula=matricula_estudiante
        #los elementos de la lista examenes son de la forma: estudiante.matricula, estudiante.apellidos,estudiante.nombre,quimestre.notaExamen,quimestre.notaQuimestre
        for registro in examenes:
            matricula_actual = registro[0]
            if (matricula_actual == matricula_estudiante):
                examen = registro[3]
                notaQuimestre = registro[4]
                return examen, notaQuimestre
Пример #11
0
    def __init__(self, *args):
        QWidget.__init__(self, *args)
        self.setGeometry(100, 50, self.dimension_x, self.dimension_y)
        self.contenedor = QVBoxLayout(
        )  #layout principal de esta gui, los widgets se agregan de forma horizontal
        self.setLayout(self.contenedor)
        self.Personas = MyTable(self)
        self.layoutPersona = QFormLayout()
        self.layoutBotones = QHBoxLayout()
        self.layoutBusqueda = QFormLayout()
        #definicion cajas de texto
        self.cedula = QLineEdit()
        self.nombre = QLineEdit()
        self.apellido = QLineEdit()
        self.sexo = QComboBox()
        self.sexo.addItems(["Masculino", "Femenino"])
        self.estadoCivil = QComboBox()
        self.lEstadoCivil = [
            "Soltero", "Casado", "Divorsiado", "Union Libre", "Viudo"
        ]
        self.estadoCivil.addItems(self.lEstadoCivil)
        self.ocupacion = QLineEdit()
        self.lugarTrabajo = QLineEdit()
        self.telefono = QLineEdit()
        self.direccion = QLineEdit()
        self.calendarioFecha = QCalendarWidget()
        #botones
        self.btnGuardar = QPushButton("Guardar")
        self.btnGuardar.setIcon(QIcon("Imagenes/guardar.jpg"))
        self.btnCancelar = QPushButton("Cancelar")
        self.btnSeleccionar = QPushButton("Seleccionar")
        #definicion objetos busqueda
        self.comboBusqueda = QComboBox()
        self.txtBusqueda = QLineEdit()
        self.comboBusqueda.addItems([u"cédula", "Nombres", "Apellidos"])

        # llenamos el layout de los botones
        self.layoutBotones.addWidget(self.btnGuardar)
        self.layoutBotones.addWidget(self.btnCancelar)

        #creacion de formulario
        self.layoutPersona.addRow("cedula: ", self.cedula)
        self.cedula.setEnabled(False)
        self.layoutPersona.addRow("Nombre: ", self.nombre)
        self.layoutPersona.addRow("Apellido: ", self.apellido)
        self.layoutPersona.addRow("sexo: ", self.sexo)
        self.layoutPersona.addRow("Fecha Nacimiento", self.calendarioFecha)
        self.layoutPersona.addRow("Estado Civil: ", self.estadoCivil)
        self.layoutPersona.addRow("Ocupacion: ", self.ocupacion)
        self.layoutPersona.addRow("Lugar Trabajo: ", self.lugarTrabajo)
        self.layoutPersona.addRow("Telefono: ", self.telefono)
        self.layoutPersona.addRow("Direccion: ", self.direccion)

        #creacion de layout busqueda
        self.layoutBusqueda.addRow(self.comboBusqueda, self.txtBusqueda)

        #agregamos los layout a la ventana
        self.contenedor.addLayout(self.layoutBusqueda)
        self.contenedor.addWidget(self.Personas)
        self.contenedor.addWidget(self.btnSeleccionar)
        self.contenedor.addLayout(self.layoutPersona)
        self.contenedor.addLayout(self.layoutBotones)

        #tablas
        self.manejador = ManejadorBD()
        self.headers = [
            u"Cédula", "Nombres", "Apellidos", "Sexo", "Fecha de Nacimiento",
            "Estado Civil", u"Ocupación", "Lugar de Trabajo", u"Teléfono",
            u"Dirección"
        ]
        self.Personas.setHeader(self.headers)
        self.Personas.addTable(self.manejador.consultarPersonas())

        self.txtBusqueda.textChanged.connect(
            self.Personas.on_lineEdit_textChanged)
        self.comboBusqueda.currentIndexChanged.connect(
            self.Personas.on_comboBox_currentIndexChanged)
        self.modoSeleccion()
        self.connect(self.btnSeleccionar, SIGNAL("clicked()"),
                     self.clik_Seleccionar)
        self.connect(self.btnGuardar, SIGNAL("clicked()"), self.clik_Guardar)
        self.connect(self.btnCancelar, SIGNAL("clicked()"), self.clik_Cancelar)
        self.P = []
Пример #12
0
class VistaReporte(QWidget):
    def __init__(self, tabla, *args):
        QWidget.__init__(self, *args)
        self.generador = GeneradorReporte()
        self.layout_reportes = QVBoxLayout()
        self.layout_reportes.addWidget(QLabel("Cursos Disponibles:"))
        self.Estudiantes = tabla
        self.layout_reportes.addWidget(self.Estudiantes)
        self.boton_uno = QHBoxLayout()
        self.manejador = ManejadorBD()
        self.boton_uno.addWidget(QLabel("                               "))
        self.tiposReportes = [
            "Lista de Estudiantes", "Lista de asistencia", "Libretas",
            "Promociones"
        ]
        self.comboReportes = QComboBox()
        self.comboReportes.addItems(self.tiposReportes)
        self.boton_uno.addWidget(QLabel("Tipos de Reportes:"))
        self.boton_uno.addWidget(self.comboReportes)
        self.boton_uno.addWidget(QLabel("                               "))
        self.boton_uno.addWidget(QLabel("                               "))
        self.botonReportes = QPushButton("Generar Reporte")
        self.connect(self.botonReportes, SIGNAL("clicked()"),
                     self.initReportes)
        self.boton_uno.addWidget(self.botonReportes)
        self.boton_uno.addWidget(QLabel("                               "))
        self.boton_uno.addWidget(QLabel("                               "))
        self.layout_reportes.addLayout(self.boton_uno)
        self.setLayout(self.layout_reportes)

    def initReportes(self):
        indice = self.comboReportes.currentIndex()
        resultados = self.Estudiantes.getSelectedRegister()
        if (indice == 0):
            if len(resultados) > 0:
                cursoSeleccionado = resultados[0]
                id_curso = str(cursoSeleccionado[1])
                estudiantes = self.manejador.obtenerEstudiantesPorCurso(
                    id_curso)

                listaEstudiantes = []

                for es in estudiantes:
                    estudiante = unicode(es[0] + " " + es[1])
                    listaEstudiantes.append(estudiante)

                self.generador.GenerarLista(listaEstudiantes,
                                            str(cursoSeleccionado[2]),
                                            str(cursoSeleccionado[3]))

        elif (indice == 1):
            if len(resultados) > 0:
                cursoSeleccionado = resultados[0]
                id_curso = str(cursoSeleccionado[1])
                estudiantes = self.manejador.obtenerEstudiantesPorCurso(
                    id_curso)

                listaEstudiantes = []

                for es in estudiantes:
                    estudiante = unicode(es[0] + " " + es[1])
                    listaEstudiantes.append(estudiante)

                self.generador.GenerarListaAsistencia(
                    listaEstudiantes, str(cursoSeleccionado[2]),
                    str(cursoSeleccionado[3]))
class VistaProfesorAdm(QWidget):
	dimension_x=700
	dimension_y=600

	def __init__(self,*args):
			QWidget.__init__(self,*args)
			self.setGeometry(100,50,self.dimension_x,self.dimension_y)
			self.contenedor = QVBoxLayout() #layout principal de esta gui, los widgets se agregan de forma vertical
			self.setLayout(self.contenedor)

			#componentes que iran en la ventana
			

			self.tipoBusqueda=[u"Cédula","Nombres","Apellidos"]
			self.paramBusqueda = QLineEdit() #entrada de texto usada para ingresar el parametro de busqueda seccion Consultas
			self.btnBuscar = QPushButton() # boton para aceptar la busqueda
			self.btnBuscar.setIcon(QIcon("Imagenes/buscar.jpg"))
			self.comboBusquedaProfesor=QComboBox() #tipos de usuario mostrados en un combo box
			self.comboBusquedaProfesor.addItems(self.tipoBusqueda)
			
			#COMPONENTES DE LA VENTANA CONSULTAS
			self.labelsProfesor = [QLabel(""),QLabel(""),QLabel(""),QLabel(""),QLabel(""),QLabel("")]
			
			#elementos de la pestaña de EDICION
			
			# expresion regular`para validar nombres
			self.regex = QRegExp(u"^[À-Ÿà-ÿA-Za-z\\s*\\u'\xf1'*]+$")
			self.validator = QRegExpValidator(self.regex)

			#expresiones regulares para la cedula
			self.regexN = QRegExp("[0-9]*")
			self.validatorN = QRegExpValidator(self.regexN)

			self.btnEditar = QPushButton("Editar")
			self.btnEditar.setIcon(QIcon("Imagenes/editar.jpg"))
			self.connect(self.btnEditar,SIGNAL("clicked()"),self.activarEdicion)
			self.btnGuardar = QPushButton("Guardar")
			self.btnGuardar.setIcon(QIcon("Imagenes/guardar.jpg"))
			self.connect(self.btnGuardar,SIGNAL("clicked()"),self.accionGuardarEdicion)
			self.btnCancelar=QPushButton("Cancelar")
			self.connect(self.btnCancelar,SIGNAL("clicked()"),self.accionCancelar)
			#cuadros de texto que permiten editar
			self.editorProfesor = [ QLineEdit(), QLineEdit(), QLineEdit(), QLineEdit(),QLineEdit(), QLineEdit()]
			
			for i in self.editorProfesor:
				i.setReadOnly(True)

			for i in range(1,4):
				self.editorProfesor[i].setValidator(self.validator)

			self.editorProfesor[0].setValidator(self.validatorN)

			
			#ATRIBUTOS DE CREACION
			#lineas de texto para crear al profesor
			self.textCamposProfesor = [ QLineEdit(), QLineEdit(), QLineEdit(), QLineEdit(),QLineEdit()]
			
			#seteo la expresion regular en los QLineEdit
			for i in range(1,4):
				self.textCamposProfesor[i].setValidator(self.validator)

			self.textCamposProfesor[0].setValidator(self.validatorN)


			self.btnCrear = QPushButton("Guardar")
			self.btnCrear.setIcon(QIcon("Imagenes/guardar.jpg"))
			self.connect(self.btnCrear,SIGNAL("clicked()"),self.accionGuardarCreacion)

			self.profesores=MyTable(self)
			#agrego datos a la tabla
			self.headers= [u"Cédula", "Apellidos","Nombres"]
			self.profesores.setHeader(self.headers)
			self.manejador= ManejadorBD()
			self.profesores.addTable(self.manejador.consultarProfesores())
			self.profesores.setEditable(False)
			self.paramBusqueda.textChanged.connect(self.profesores.on_lineEdit_textChanged)
			self.comboBusquedaProfesor.currentIndexChanged.connect(self.profesores.on_comboBox_currentIndexChanged)
			
			# creacion de pestañas
			tab_widget = QTabWidget()
			tab_consultas = QWidget() #se crean dos pestañas
			tab_creacion = QWidget()
			tab_edicionElim = QWidget ()
			
			#agrego las pestañas
			self.cont_consulta = QVBoxLayout(tab_consultas) #layout principal de esta gui, los widgets se agregan de forma horizontal
			self.cont_creacion = QVBoxLayout(tab_creacion)
			self.cont_edicionElim = QVBoxLayout(tab_edicionElim)
			
			tab_widget.addTab(tab_creacion,"Crear")
			tab_widget.addTab(tab_consultas,u"Consultar")
			tab_widget.addTab(tab_edicionElim,u"Edición")

			self.botonObtenerInfo=QPushButton("Obtener Informacion del Profesor")
			self.connect(self.botonObtenerInfo,SIGNAL("clicked()"),self.mostrarInfoProfesor)

			self.llenarTabConsultas()
			self.llenarTabEdicion()
			self.llenarTabCreacion()
			self.primeraFila = QHBoxLayout()
			self.primeraFila.addWidget(self.comboBusquedaProfesor)
			self.primeraFila.addWidget(self.paramBusqueda)
			self.primeraFila.addWidget(self.btnBuscar)
			self.contenedor.addLayout(self.primeraFila)
			self.contenedor.addWidget(self.profesores)
			self.contenedor.addWidget(tab_widget)
			self.modoSeleccion()
			
	
	def llenarTabConsultas(self):
		"""
		Esta funcion sirve para llenar los elementos de la pestaña consultas
		"""
		contenidoTab = self.cont_consulta
		
		# aqui estoy creando la primera fila de la pestaña
		
		primeraFila = QVBoxLayout()
		GBoxProfInfo = QGroupBox ( "Profesor" )
		vboxProfInfo = QFormLayout()
		GBoxProfInfo.setLayout(vboxProfInfo)
		primeraFila.addWidget(self.botonObtenerInfo)
		primeraFila.addWidget(GBoxProfInfo)
		listDatosEProf = [u"Cédula:","Nombres:", "Apellidos:","Usuario:","Clave:"]
		
		for i in range (0,5):
			vboxProfInfo.addRow(listDatosEProf[i], self.labelsProfesor[i])

		contenidoTab.addLayout(primeraFila)


	def llenarTabCreacion(self):
		contenidoTab = self.cont_creacion
		textoCampos = [u"Cédula:","Nombres:", "Apellidos:","Usuario:","Clave:"]
		form_layout = QFormLayout()
		form_layout.addRow("Ingrese correctamente los campos:",QLabel("    "))
		form_layout.addRow(QLabel("    "))

		for i in range (0,5):
			form_layout.addRow(textoCampos[i], self.textCamposProfesor[i])

		contenidoTab.addLayout(form_layout)

		fila = QHBoxLayout()
		fila.addWidget(self.btnCrear)
		fila.addWidget(QLabel("                         "))
		contenidoTab.addLayout(fila)


	def mostrarInfoProfesor(self):
		profesoresSeleccionados=self.profesores. getSelectedRegister()
		profesor=profesoresSeleccionados[0]#el primer registro seleccionado
		resultados=self.manejador.obtenerInfoProfesor(profesor[0])
		registro=resultados[0]
		for i in range(len(registro)):
			self.labelsProfesor[i].setText(QString(str(registro[i])))  

	def llenarTabEdicion(self):
		"""
		Esta funcion sirve para llenar los elementos de la pestaña consultas
		"""
		contenidoTab = self.cont_edicionElim
		
		# aqui estoy creando la primera fila de la pestaña
		
		textoCampos = [u"Cédula:","Nombres:", "Apellidos:","Usuario:","Clave:"]
		form_layout = QFormLayout()

		for i in range (0,5):
			form_layout.addRow(textoCampos[i], self.editorProfesor[i])

		contenidoTab.addLayout(form_layout)

		terceraFila = QHBoxLayout()
		terceraFila.addWidget(self.btnEditar)
		terceraFila.addWidget(self.btnGuardar)
		terceraFila.addWidget(self.btnCancelar)
		contenidoTab.addLayout(terceraFila)


	def activarEdicion(self):
		profesoresSeleccionados=self.profesores.getSelectedRegister()
		profesor=profesoresSeleccionados[0]#el primer registro seleccionado
		resultados=self.manejador.obtenerInfoProfesor(profesor[0])
		registro=resultados[0]
		for i in range(len(registro)):
			if i!=0:
				self.editorProfesor[i].setReadOnly(False)
				self.modoEdicion()
			else:
				self.editorProfesor[i].setEnabled(False)
			self.editorProfesor[i].setText(QString(str(registro[i])))  


	def accionGuardarCreacion(self):
		try:
			cedula = self.textCamposProfesor[0].displayText()
			nombre = unicode(self.textCamposProfesor[1].displayText())
			apellido = unicode(self.textCamposProfesor[2].displayText())
			usuario = unicode(self.textCamposProfesor[3].displayText())
			clave = unicode(self.textCamposProfesor[4].displayText())

			if (not(len(cedula)==10)):
				mensaje = QMessageBox.about(self, 'Error',u'Cédula inválida: debe tener 10 dígitos')
			elif (cedula =="" or nombre == "" or apellido == "" or usuario =="" or clave == ""):
				mensaje = QMessageBox.about(self, 'Error',u'Datos sin llenar: llene todos los datos')
			else:
				tupla = (cedula, nombre, apellido, usuario, clave)
				resultado=self.manejador.existeUsuarioProfesor(usuario)
				if(len(resultado)==0):#el usuario que se desea insertar no existe
					self.manejador.insertarProfesor(tupla)
					QMessageBox.about(self,"Aviso",u'Se ha creado un nuevo profesor con éxito')
				else:#el usuario que se desea insertar si existe
					mensaje = QMessageBox.about(self, 'Error',u'Usuario ya existente en el Sistema')

				for i in self.textCamposProfesor:
					i.setText("")

				self.actualizarProfesores()
		except:
			QMessageBox.about(self, 'Error',u'Datos Invalidos')


	def accionGuardarEdicion(self):
		try:
			cedula = self.editorProfesor[0].displayText()
			nombre = self.editorProfesor[1].displayText()
			apellido = self.editorProfesor[2].displayText()
			usuario = self.editorProfesor[3].displayText()
			clave = self.editorProfesor[4].displayText()
			if (not(len(cedula)==10)):
				QMessageBox.about(self, 'Error',u'Cédula inválida: debe tener 10 dígitos')
			elif (cedula =="" or nombre == "" or apellido == "" or usuario =="" or clave == ""):
				QMessageBox.about(self, 'Error',u'Datos sin llenar: llene todos los datos')
			else:
				tupla=(cedula,nombre,apellido,usuario,clave)
				resultados=self.manejador.existeUsuarioRepetido(cedula,usuario)
				if(len(resultados)==0):
					self.manejador.editarProfesor(tupla)
					QMessageBox.about(self,"Aviso",u'Se han guardado los cambios con éxito')		
					self.actualizarProfesores()
					for i in self.editorProfesor:
						i.setReadOnly(True)
						i.setText("")
				else:
					QMessageBox.about(self,"Error",u'Usuario ya existente en el sistema')
			self.modoSeleccion()				
		except:
			QMessageBox.about(self, 'Error',u'Datos invalidos')


	def actualizarProfesores(self):
		self.profesores.deleteData()
		self.profesores.addTable(self.manejador.consultarProfesores())
		self.profesores.setEditable(False)

	def modoEdicion(self):
		self.btnEditar.setEnabled(False)
		self.btnGuardar.setEnabled(True)
		self.btnCancelar.setEnabled(True)


	def modoSeleccion(self):
		self.btnEditar.setEnabled(True)
		self.btnGuardar.setEnabled(False)
		self.btnCancelar.setEnabled(False)

	def accionCancelar(self):
		self.modoSeleccion()
		for i in self.editorProfesor:
			i.setText("")
			i.setReadOnly(True)
			
					
class VistaCurso(QWidget):
	dimension_x=400
	dimension_y=500

	def __init__(self,*args):
			QWidget.__init__(self,*args)
			self.setGeometry(100,50,self.dimension_x,self.dimension_y)
			self.contenedor = QVBoxLayout() #layout principal de esta gui, los widgets se agregan de forma horizontal
			self.setLayout(self.contenedor)
			#creamos las opciones
			self.tab_widget = QTabWidget()
			tab_Nuevo=QWidget()
			self.tab_ElegirDirigente=QWidget()
			self.tab_ProfesorMateria=QWidget()

			self.layoutNuevo=QVBoxLayout()
			self.layoutAgregar=QVBoxLayout()
			tab_Nuevo.setLayout(self.layoutNuevo)
			self.tab_widget.addTab(tab_Nuevo,"Curso")
			self.tab_widget.addTab(self.tab_ProfesorMateria,"Asignar Profesor a Materias")
			self.tab_widget.addTab(self.tab_ElegirDirigente,"Asignar Dirigente a Curso")
			self.contenedorNuevo=QVBoxLayout()
			#botones
			self.btnCrear=QPushButton("Crear")
			self.connect(self.btnCrear,SIGNAL("clicked()"),self.accionCrear)
			self.btnActualizar=QPushButton("Guardar")
			self.connect(self.btnActualizar,SIGNAL("clicked()"),self.accionGuardar)
			self.btnCancelar=QPushButton("Cancelar")
			self.connect(self.btnCancelar,SIGNAL("clicked()"),self.accionCancelar)
			#layaouts
			self.Cursos=MyTable(self)
			self.contenedor.addWidget(QLabel("Cursos"))
			self.contenedor.addWidget(self.Cursos)

			self.botonCurso=QPushButton("Mostrar Informacion del Curso")
			self.connect(self.botonCurso,SIGNAL("clicked()"),self.obtenerInfoCurso)
			self.contenedor.addWidget(self.botonCurso)
			
			self.contenedor.addWidget(self.tab_widget)
			
			self.layoutCurso1=QFormLayout()
			self.layoutCurso2=QHBoxLayout()
			self.layoutNuevo.addLayout(self.layoutCurso1)
			self.layoutNuevo.addLayout(self.layoutCurso2)

			#definicion cajas de texto
			self.aLectivo=QLineEdit()
			self.curso=QComboBox()
			self.paralelo=QLineEdit()
			self.listaCurso=["Kinder","Primero","Segundo","Tercero","Cuarto","Quinto","Sexto","Septimo"]
			self.curso.addItems(self.listaCurso)
			#creacion de formulario
			self.layoutCurso1.addRow("Ano Lectivo: ",self.aLectivo)
			self.layoutCurso1.addRow("curso: ",self.curso)
			self.layoutCurso1.addRow("Paralelo: ",self.paralelo)
			self.layoutCurso2.addWidget(self.btnCrear)
			self.layoutCurso2.addWidget(self.btnActualizar)
			self.layoutCurso2.addWidget(self.btnCancelar)

			#agrego datos a la tabla
			self.manejador = ManejadorBD()
			self.HeadersCurso= [u"Código", u"Número", u"Año Lectivo", "Paralelo",u"Cédula Dirigente"]
			self.Cursos.setHeader(self.HeadersCurso)
			self.Cursos.addTable(self.manejador.obtenerCursos())
			self.Cursos.setEditable(False)

			self.btnLigar=QPushButton("Ligar")
			self.connect(self.btnLigar,SIGNAL("clicked()"),self.ligar)
			self.btnDesLigar=QPushButton("DesLigar")
			self.connect(self.btnDesLigar,SIGNAL("clicked()"),self.desligar)
			self.layoutProfesorMateria=QHBoxLayout()
			self.materiasConProfesor=[]#almacenara las tuplas Materia,Profesor que se debera cargar en la base de datos


			self.layoutProfesorMateria1=QVBoxLayout()
			self.layoutProfesorMateria2=QVBoxLayout()
			self.layoutProfesorMateria3=QVBoxLayout()
			self.layoutProfesorMateria4=QVBoxLayout()

			self.MateriasSinProfesor=MyTable(self.tab_widget)
			self.MateriasSinProfesor.setHeader(["Codigo","Nombre"])
			self.MateriasProfesor=MyTable(self.tab_widget)
			self.MateriasProfesor.setHeader(["","Materia Asignada","","Nombres del Profesor","Apellidos del Profesor"])
			self.MateriasProfesor.hideColumn(0)
			self.MateriasProfesor.hideColumn(2)

			self.Profesores=MyTable(self.tab_widget)
			self.Profesores.setHeader([u"Cédula","Nombre","Apellido"])
			self.Profesores.addTable(self.manejador.consultarProfesores())	
			self.Profesores.setEditable(False)		

			self.layoutProfesorMateria1.addWidget(QLabel("Materias sin Profesor"))
			self.layoutProfesorMateria1.addWidget(self.MateriasSinProfesor)
			self.layoutProfesorMateria2.addWidget(QLabel("Profesores"))
			self.layoutProfesorMateria2.addWidget(self.Profesores)
			self.layoutProfesorMateria3.addWidget(self.btnLigar)
			self.layoutProfesorMateria3.addWidget(self.btnDesLigar)
			self.layoutProfesorMateria4.addWidget(QLabel("Materia Profesor"))
			self.layoutProfesorMateria4.addWidget(self.MateriasProfesor)

			self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria1)
			self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria2)
			self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria3)
			self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria4)
			self.tab_ProfesorMateria.setLayout(self.layoutProfesorMateria)
			self.modoConsulta()
			self.paralelo.setEnabled(False)
			self.layoutDirigente=QHBoxLayout()
			self.ProfesoresDirigentes=MyTable(self.tab_widget)
			self.ProfesoresDirigentes.setHeader([u"Cédula","Nombre","Apellido"])
			self.ProfesoresDirigentes.addTable(self.manejador.consultarProfesores())
			self.btnAsignarDirigente=QPushButton("Asignar Dirigente")
			self.layoutDirigente.addWidget(self.ProfesoresDirigentes)
			self.layoutDirigente.addWidget(self.btnAsignarDirigente)
			self.tab_ElegirDirigente.setLayout(self.layoutDirigente)
			self.connect(self.btnAsignarDirigente,SIGNAL("clicked()"),self.ligarDirigente)

			
	def obtenerInfoCurso(self):
		self.modoConsulta()
		self.idCurso=0
		cursos=self.Cursos.getSelectedRegister()
		if len(cursos)>0:
			cursoSeleccionado=cursos[len(cursos)-1]#el primer registro seleccionado
			self.idCurso=cursoSeleccionado[0]#el primer atributo es el id, almacena la referencia del idCurso actual
			self.obtenerMateriasSinProfesor(self.idCurso)
			self.actualizarMateriasProfesor(self.idCurso)
			#llenamos la consulta
			self.aLectivo.setText(cursoSeleccionado[2])
			i=self.listaCurso.index(cursoSeleccionado[1])
			self.curso.setCurrentIndex(i)
			self.paralelo.setText(cursoSeleccionado[3])

	def obtenerMateriasSinProfesor(self,idCurso):#actualiza el grid con la informacion de las materias sin profesor
		materiasDelCurso=self.manejador.obtenerMateriasPorCurso(idCurso)#obtiene las materias sin profesor del curso
		self.MateriasSinProfesor.row=0
		self.MateriasSinProfesor.deleteData()
		self.MateriasSinProfesor.addTable(materiasDelCurso)#agrega las materias sin profesor
		self.MateriasSinProfesor.hideColumn(0)
		self.MateriasSinProfesor.setEditable(False)

	def actualizarMateriasProfesor(self,idCurso):#actualiza el grid con la informacion de las materias y sus profesores asignados
		resultados=self.manejador.obtenerMateriaCursoProfesor(idCurso)
		self.MateriasProfesor.deleteData()#Si existe informacion dentro del grid la borra para cargar nueva informacion
		self.MateriasProfesor.addTable(resultados)
		self.MateriasProfesor.setEditable(False)
		self.MateriasProfesor.hideColumn(0)
		self.MateriasProfesor.hideColumn(2)

	def ligar(self):
		try:
			#obtiene la materia seleccionada
			materiasSeleccionadas=self.MateriasSinProfesor.getSelectedRegister()
			if len(materiasSeleccionadas)>0:
				materia=materiasSeleccionadas[0]#el primer registro seleccionado
				idMateria=materia[0]
			#obtiene el profesor seleccionado
			profesoresSeleccionados=self.Profesores.getSelectedRegister()#el primer registro seleccionado		
			if len(profesoresSeleccionados)>0:
				profesor=profesoresSeleccionados[0]
				idProfesor=profesor[0]

			#agrega la informacion a la base de datos
			self.manejador.agregarProfesorAMateriaDeCurso(self.idCurso,idMateria,idProfesor)
			#actualizar la informacion de la gui
			self.actualizarMateriasProfesor(self.idCurso)
			self.obtenerMateriasSinProfesor(self.idCurso)
			QMessageBox.about(self,u'Actualización','Se ha asignado esta materia al profesor correctamente')
		except:
			QMessageBox.about(self,'Error!',u'No se ha podido registrar esta materia al profesor')


	def desligar(self):
		try:
			lista=self.MateriasProfesor.getSelectedRegister()
			if len(lista)>0:
				fila=lista[0]
				#obtengo la informacion de la tupla que fue seleccioanda 
				idMateriaSeleccionada=str(fila[0])
				cedulaProfesorSeleccionado=str(fila[2])
				#actualizar la base
				self.manejador.quitarProfesorDeMateria(self.idCurso,idMateriaSeleccionada,cedulaProfesorSeleccionado)
				#actualizar las materias sin profesor
				self.actualizarMateriasProfesor(self.idCurso)
				self.obtenerMateriasSinProfesor(self.idCurso)
				QMessageBox.about(self,u'Actualización','Se ha desvinculado al profesor de esta materia')
		except:
			QMessageBox.about(self,'Error!',u'No se ha podido desvincular al profesor de esta materia')



	def actualizarMaterias(self):
		filasSeleccionadas=self.MateriasSinProfesor.getIndexSelected()#obtiene curso seleccionado
		registro=filasSeleccionadas[0]
		indice=registro.row()#obtiene el indice del registro dentro del grid
		self.MateriasSinProfesor.deleteRow(indice)#borra la fila de la materia a la cual ya se le asigno un profesor
		self.MateriasSinProfesor.setEditable(False)

	def modoCrear(self):
		self.btnCrear.setEnabled(False)
		self.btnActualizar.setEnabled(True)
		self.btnCancelar.setEnabled(True)
		self.aLectivo.setEnabled(True)
		self.curso.setEnabled(True)
		self.paralelo.setEnabled(False)


	def modoConsulta(self):
		self.aLectivo.setText("")
		self.paralelo.setText("")
		self.btnCrear.setEnabled(True)
		self.btnActualizar.setEnabled(False)
		self.btnCancelar.setEnabled(False)
		self.aLectivo.setEnabled(False)
		self.curso.setEnabled(False)
		self.paralelo.setEnabled(False)

	def accionCrear(self):
		self.aLectivo.setText("")
		self.paralelo.setText("")
		self.modoCrear()

	def accionGuardar(self):
		datos=(self.curso.currentIndex()+1,self.aLectivo.displayText())
		try:
			if(self.validarAnoLectivo(self.aLectivo.displayText())):
				self.manejador.crearCurso(datos)
				QMessageBox.about(self,'Aviso!',u'Se ha creado el Curso Correctamente')
				self.modoConsulta()
				self.actualizarCursos()
			else:
				QMessageBox.about(self,'Error!',u'Año lectivo invalido')	
		except:
			QMessageBox.about(self,'Error!',u'No se ha podido Crear el Curso')

	def accionCancelar(self):
		self.aLectivo.setText("")
		self.paralelo.setText("")
		self.modoConsulta()

	def actualizarCursos(self):
		self.Cursos.deleteData()
		self.Cursos.addTable(self.manejador.obtenerCursos())


	def validarAnoLectivo(self,a):
		 anos= a.split('-')
		 if(len(anos)!=2):
		 	return False
		 else:
		 	try:
		 		ano1=int(anos[0])
		 		ano2=int(anos[1])
		 		if((ano2-ano1)==1):
		 			return True
		 		else:
		 			return False
		 	except Exception, e:
		 		return False
Пример #15
0
    def __init__(self, *args):
        QWidget.__init__(self, *args)
        self.setGeometry(100, 50, self.dimension_x, self.dimension_y)
        self.contenedor = QVBoxLayout(
        )  #layout principal de esta gui, los widgets se agregan de forma vertical
        self.setLayout(self.contenedor)

        #componentes que iran en la ventana

        self.tipoBusqueda = [u"Cédula", "Nombres", "Apellidos"]
        self.paramBusqueda = QLineEdit(
        )  #entrada de texto usada para ingresar el parametro de busqueda seccion Consultas
        self.btnBuscar = QPushButton()  # boton para aceptar la busqueda
        self.btnBuscar.setIcon(QIcon("Imagenes/buscar.jpg"))
        self.comboBusquedaProfesor = QComboBox(
        )  #tipos de usuario mostrados en un combo box
        self.comboBusquedaProfesor.addItems(self.tipoBusqueda)

        #COMPONENTES DE LA VENTANA CONSULTAS
        self.labelsProfesor = [
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel("")
        ]

        #elementos de la pestaña de EDICION

        # expresion regular`para validar nombres
        self.regex = QRegExp(u"^[À-Ÿà-ÿA-Za-z\\s*\\u'\xf1'*]+$")
        self.validator = QRegExpValidator(self.regex)

        #expresiones regulares para la cedula
        self.regexN = QRegExp("[0-9]*")
        self.validatorN = QRegExpValidator(self.regexN)

        self.btnEditar = QPushButton("Editar")
        self.btnEditar.setIcon(QIcon("Imagenes/editar.jpg"))
        self.connect(self.btnEditar, SIGNAL("clicked()"), self.activarEdicion)
        self.btnGuardar = QPushButton("Guardar")
        self.btnGuardar.setIcon(QIcon("Imagenes/guardar.jpg"))
        self.connect(self.btnGuardar, SIGNAL("clicked()"),
                     self.accionGuardarEdicion)
        self.btnCancelar = QPushButton("Cancelar")
        self.connect(self.btnCancelar, SIGNAL("clicked()"),
                     self.accionCancelar)
        #cuadros de texto que permiten editar
        self.editorProfesor = [
            QLineEdit(),
            QLineEdit(),
            QLineEdit(),
            QLineEdit(),
            QLineEdit(),
            QLineEdit()
        ]

        for i in self.editorProfesor:
            i.setReadOnly(True)

        for i in range(1, 4):
            self.editorProfesor[i].setValidator(self.validator)

        self.editorProfesor[0].setValidator(self.validatorN)

        #ATRIBUTOS DE CREACION
        #lineas de texto para crear al profesor
        self.textCamposProfesor = [
            QLineEdit(),
            QLineEdit(),
            QLineEdit(),
            QLineEdit(),
            QLineEdit()
        ]

        #seteo la expresion regular en los QLineEdit
        for i in range(1, 4):
            self.textCamposProfesor[i].setValidator(self.validator)

        self.textCamposProfesor[0].setValidator(self.validatorN)

        self.btnCrear = QPushButton("Guardar")
        self.btnCrear.setIcon(QIcon("Imagenes/guardar.jpg"))
        self.connect(self.btnCrear, SIGNAL("clicked()"),
                     self.accionGuardarCreacion)

        self.profesores = MyTable(self)
        #agrego datos a la tabla
        self.headers = [u"Cédula", "Apellidos", "Nombres"]
        self.profesores.setHeader(self.headers)
        self.manejador = ManejadorBD()
        self.profesores.addTable(self.manejador.consultarProfesores())
        self.profesores.setEditable(False)
        self.paramBusqueda.textChanged.connect(
            self.profesores.on_lineEdit_textChanged)
        self.comboBusquedaProfesor.currentIndexChanged.connect(
            self.profesores.on_comboBox_currentIndexChanged)

        # creacion de pestañas
        tab_widget = QTabWidget()
        tab_consultas = QWidget()  #se crean dos pestañas
        tab_creacion = QWidget()
        tab_edicionElim = QWidget()

        #agrego las pestañas
        self.cont_consulta = QVBoxLayout(
            tab_consultas
        )  #layout principal de esta gui, los widgets se agregan de forma horizontal
        self.cont_creacion = QVBoxLayout(tab_creacion)
        self.cont_edicionElim = QVBoxLayout(tab_edicionElim)

        tab_widget.addTab(tab_creacion, "Crear")
        tab_widget.addTab(tab_consultas, u"Consultar")
        tab_widget.addTab(tab_edicionElim, u"Edición")

        self.botonObtenerInfo = QPushButton("Obtener Informacion del Profesor")
        self.connect(self.botonObtenerInfo, SIGNAL("clicked()"),
                     self.mostrarInfoProfesor)

        self.llenarTabConsultas()
        self.llenarTabEdicion()
        self.llenarTabCreacion()
        self.primeraFila = QHBoxLayout()
        self.primeraFila.addWidget(self.comboBusquedaProfesor)
        self.primeraFila.addWidget(self.paramBusqueda)
        self.primeraFila.addWidget(self.btnBuscar)
        self.contenedor.addLayout(self.primeraFila)
        self.contenedor.addWidget(self.profesores)
        self.contenedor.addWidget(tab_widget)
        self.modoSeleccion()
Пример #16
0
    def __init__(self, *args):
        QWidget.__init__(self, *args)
        self.setGeometry(100, 50, self.dimension_x, self.dimension_y)
        self.contenedor = QVBoxLayout(
        )  #layout principal de esta gui, los widgets se agregan de forma vertical
        self.setLayout(self.contenedor)

        #elementos de la tabla
        self.headersTabla = [
            u"Matrícula", u"Número de cédula", "Nombres", "Apellidos", "Sexo",
            "Estado Civil", "Origen", "Etnia", "Fecha de Nacimiento"
        ]
        self.manejadorBD = ManejadorBD()  #manejador de la base de datos

        #componentes que iran en la ventana
        self.tipoBusqueda = [u"Matrícula", u"Cédula", "Nombres",
                             "Apellidos"]  #items del combo box
        self.paramBusqueda = QLineEdit(
        )  #entrada de texto usada para ingresar el parametro de busqueda seccion Consultas
        self.comboBusquedaEstudiante = QComboBox(
        )  #tipos de usuario mostrados en un combo box
        self.comboBusquedaEstudiante.addItems(self.tipoBusqueda)
        self.botonSeleccionar = QPushButton("Seleccionar")

        #elementos de la pestaña de edicion
        self.btnEditar = QPushButton("Editar")
        self.btnEditar.setIcon(QIcon("Imagenes/editar.jpg"))
        self.connect(self.btnEditar, SIGNAL("clicked()"), self.activarEdicion)
        self.btnGuardar = QPushButton("Guardar")
        self.btnGuardar.setIcon(QIcon("Imagenes/guardar.jpg"))
        self.connect(self.btnGuardar, SIGNAL("clicked()"),
                     self.accionGuadarEdicion)
        #labels que muestran informacion
        self.labelsDatosEstudiantes = [
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel("")
        ]

        #lables que muestran informacion del padre

        self.labelsDatosPadre = [
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel("")
        ]

        #labels que muestran informacion de la madre

        self.labelsDatosMadre = [
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel("")
        ]

        #lables que muestran informacion del representante

        self.labelsDatosRep = [
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel("")
        ]

        #variables de la pestaña de edicion
        self.listsexos = ["Masculino",
                          "Femenino"]  #lista para escoger el tipo de usuario
        self.listEstCivil = [
            "Soltero", "Casado", "Divorsiado", "Union Libre", "Viudo"
        ]
        self.listEtnia = [
            "BLANCO", "MESTIZO", "AFROECUATORIANO", "INDIGENA", "MONTUBIO",
            "NEGRO", "MULATO", "OTROS"
        ]

        #lineas de texto para deditar al estudiante
        #se guardan en este orden los campos:
        #cedula, nombre, apellido,sexo(combobox), estadocivil(combobox), origen, etnia(combobox), fechanacimiento

        self.textDatosEstudiantes = [
            QLineEdit(),
            QLineEdit(),
            QLineEdit(),
            QComboBox(),
            QComboBox(),
            QLineEdit(),
            QComboBox(),
            QLineEdit()
        ]

        #expresiones regulares para los nombres
        self.regex = QRegExp(u"^[À-Ÿà-ÿA-Za-z\\s*\\u'\xf1'*]+$")
        self.validator = QRegExpValidator(self.regex)

        #expresiones regulares para la cedula
        self.regexN = QRegExp("[0-9]*")
        self.validatorN = QRegExpValidator(self.regexN)

        #itero los QLineEdit y les seteo la expresion regular y que sean solo de lectura
        for i in [0, 1, 2, 5]:
            self.textDatosEstudiantes[i].setReadOnly(True)

        for i in [1, 2, 5]:
            self.textDatosEstudiantes[i].setValidator(self.validator)

        self.textDatosEstudiantes[0].setValidator(self.validatorN)

        #agrego la tabla de alumnos
        self.alumnos = MyTable(self)
        self.alumnos.setHeader(self.headersTabla)
        self.alumnos.addTable(self.manejadorBD.consultarEstudiante())
        self.paramBusqueda.textChanged.connect(
            self.alumnos.on_lineEdit_textChanged)
        self.comboBusquedaEstudiante.currentIndexChanged.connect(
            self.alumnos.on_comboBox_currentIndexChanged)
        self.alumnos.setEditable(False)

        # creacion de pestañas
        tab_widget = QTabWidget()
        tab_consultas = QScrollArea()  #se crean dos pestañas
        tab_consultas.setWidget(QWidget())
        tab_consultas.setWidgetResizable(True)
        tab_edicion = QScrollArea()
        tab_edicion.setWidget(QWidget())
        tab_edicion.setWidgetResizable(True)

        #agrego las pestañas
        self.cont_consulta = QVBoxLayout(
            tab_consultas.widget()
        )  #layout principal de esta gui, los widgets se agregan de forma horizontal
        self.cont_edicion = QVBoxLayout(tab_edicion.widget())

        tab_widget.addTab(tab_consultas, u"Consultas")
        tab_widget.addTab(tab_edicion, u"Edición")

        self.llenarTabConsultas()
        self.llenarTabEdicion()
        self.layoutBusqueda = QHBoxLayout()
        self.layoutBusqueda.addWidget(self.comboBusquedaEstudiante)
        self.layoutBusqueda.addWidget(self.paramBusqueda)
        self.contenedor.addLayout(self.layoutBusqueda)
        self.contenedor.addWidget(self.alumnos)
        self.contenedor.addWidget(tab_widget)

        self.connect(self.botonSeleccionar, SIGNAL("clicked()"),
                     self.seleccionarEstudiante)
	def __init__(self,*args):
			QWidget.__init__(self,*args)
			self.setGeometry(100,50,self.dimension_x,self.dimension_y)
			self.contenedor = QVBoxLayout() #layout principal de esta gui, los widgets se agregan de forma vertical
			self.setLayout(self.contenedor)


			#elementos de la tabla
			self.headersTabla = [u"Matrícula",u"Número de cédula", "Nombres", "Apellidos","Sexo", 
			"Estado Civil","Origen", "Etnia", "Fecha de Nacimiento"]
			self.manejadorBD = ManejadorBD() #manejador de la base de datos

			#componentes que iran en la ventana
			self.tipoBusqueda=[u"Matrícula",u"Cédula","Nombres","Apellidos"] #items del combo box
			self.paramBusqueda = QLineEdit() #entrada de texto usada para ingresar el parametro de busqueda seccion Consultas
			self.comboBusquedaEstudiante=QComboBox() #tipos de usuario mostrados en un combo box
			self.comboBusquedaEstudiante.addItems(self.tipoBusqueda)
			self.botonSeleccionar = QPushButton("Seleccionar") 


			#elementos de la pestaña de edicion
			self.btnEditar = QPushButton("Editar")
			self.btnEditar.setIcon(QIcon("Imagenes/editar.jpg"))
			self.connect(self.btnEditar,SIGNAL("clicked()"),self.activarEdicion)
			self.btnGuardar = QPushButton("Guardar")
			self.btnGuardar.setIcon(QIcon("Imagenes/guardar.jpg"))
			self.connect(self.btnGuardar,SIGNAL("clicked()"),self.accionGuadarEdicion)
			#labels que muestran informacion 
			self.labelsDatosEstudiantes = [QLabel(""),  QLabel(""), QLabel(""), QLabel(""), QLabel(""),QLabel(""), QLabel(""), QLabel(""), QLabel("") ]
			
			#lables que muestran informacion del padre

			self.labelsDatosPadre = [ QLabel(""), QLabel(""), QLabel(""), QLabel(""), QLabel(""),
			QLabel(""), QLabel(""), QLabel(""), QLabel(""), QLabel("") ]

			#labels que muestran informacion de la madre

			self.labelsDatosMadre = [ QLabel(""), QLabel(""), QLabel(""), QLabel(""), QLabel(""),
			QLabel(""), QLabel(""), QLabel(""), QLabel(""), QLabel("") ]
			
			#lables que muestran informacion del representante

			self.labelsDatosRep = [ QLabel(""), QLabel(""), QLabel(""), QLabel(""), QLabel(""),
			QLabel(""), QLabel(""), QLabel(""), QLabel(""), QLabel("") ]

			#variables de la pestaña de edicion
			self.listsexos=["Masculino","Femenino"] #lista para escoger el tipo de usuario
			self.listEstCivil = ["Soltero","Casado","Divorsiado","Union Libre","Viudo" ]
			self.listEtnia = ["BLANCO","MESTIZO","AFROECUATORIANO","INDIGENA", "MONTUBIO","NEGRO","MULATO","OTROS"]

			

			#lineas de texto para deditar al estudiante
			#se guardan en este orden los campos:
			#cedula, nombre, apellido,sexo(combobox), estadocivil(combobox), origen, etnia(combobox), fechanacimiento

			self.textDatosEstudiantes = [ QLineEdit(), QLineEdit(), QLineEdit(), QComboBox(), QComboBox(),
			QLineEdit(), QComboBox(), QLineEdit()]

			#expresiones regulares para los nombres
			self.regex = QRegExp(u"^[À-Ÿà-ÿA-Za-z\\s*\\u'\xf1'*]+$")
			self.validator = QRegExpValidator(self.regex)

			#expresiones regulares para la cedula
			self.regexN = QRegExp("[0-9]*")
			self.validatorN = QRegExpValidator(self.regexN)
						
			#itero los QLineEdit y les seteo la expresion regular y que sean solo de lectura
			for i in [0,1,2,5]:
				self.textDatosEstudiantes[i].setReadOnly(True)
			
			for i in [1,2,5]:
				self.textDatosEstudiantes[i].setValidator(self.validator)
			
			self.textDatosEstudiantes[0].setValidator(self.validatorN)

			
			#agrego la tabla de alumnos
			self.alumnos=MyTable(self)
			self.alumnos.setHeader(self.headersTabla)
			self.alumnos.addTable(self.manejadorBD.consultarEstudiante())
			self.paramBusqueda.textChanged.connect(self.alumnos.on_lineEdit_textChanged)
			self.comboBusquedaEstudiante.currentIndexChanged.connect(self.alumnos.on_comboBox_currentIndexChanged)
			self.alumnos.setEditable(False)
			
			
			# creacion de pestañas
			tab_widget = QTabWidget()
			tab_consultas = QScrollArea () #se crean dos pestañas
			tab_consultas.setWidget(QWidget())
			tab_consultas. setWidgetResizable ( True )
			tab_edicion = QScrollArea ()
			tab_edicion.setWidget(QWidget())
			tab_edicion.setWidgetResizable(True)
			
			#agrego las pestañas
			self.cont_consulta = QVBoxLayout(tab_consultas.widget()) #layout principal de esta gui, los widgets se agregan de forma horizontal
			self.cont_edicion = QVBoxLayout(tab_edicion.widget())
			
			tab_widget.addTab(tab_consultas,u"Consultas")
			tab_widget.addTab(tab_edicion,u"Edición")
			
			self.llenarTabConsultas()
			self.llenarTabEdicion()
			self.layoutBusqueda=QHBoxLayout()
			self.layoutBusqueda.addWidget(self.comboBusquedaEstudiante)
			self.layoutBusqueda.addWidget(self.paramBusqueda)
			self.contenedor.addLayout(self.layoutBusqueda)
			self.contenedor.addWidget(self.alumnos)
			self.contenedor.addWidget(tab_widget)

			self.connect(self.botonSeleccionar,SIGNAL("clicked()"),self.seleccionarEstudiante)
class VistaPersona(QWidget):
	dimension_x=400
	dimension_y=500

	def __init__(self,*args):
			QWidget.__init__(self,*args)
			self.setGeometry(100,50,self.dimension_x,self.dimension_y)
			self.contenedor = QVBoxLayout() #layout principal de esta gui, los widgets se agregan de forma horizontal
			self.setLayout(self.contenedor)
			self.Personas=MyTable(self)
			self.layoutPersona=QFormLayout()
			self.layoutBotones=QHBoxLayout()
			self.layoutBusqueda=QFormLayout()
			#definicion cajas de texto
			self.cedula=QLineEdit()
			self.nombre=QLineEdit()
			self.apellido=QLineEdit()
			self.sexo=QComboBox()
			self.sexo.addItems(["Masculino","Femenino"])
			self.estadoCivil=QComboBox()
			self.lEstadoCivil=["Soltero","Casado","Divorsiado","Union Libre","Viudo"]
			self.estadoCivil.addItems(self.lEstadoCivil)
			self.ocupacion=QLineEdit()
			self.lugarTrabajo=QLineEdit()
			self.telefono=QLineEdit()
			self.direccion=QLineEdit()
			self.calendarioFecha=QCalendarWidget()
			#botones
			self.btnGuardar=QPushButton("Guardar")
			self.btnGuardar.setIcon(QIcon("Imagenes/guardar.jpg"))
			self.btnCancelar=QPushButton("Cancelar")
			self.btnSeleccionar=QPushButton("Seleccionar")
			#definicion objetos busqueda
			self.comboBusqueda=QComboBox()
			self.txtBusqueda=QLineEdit()
			self.comboBusqueda.addItems([u"cédula","Nombres","Apellidos"])

			# llenamos el layout de los botones
			self.layoutBotones.addWidget(self.btnGuardar)
			self.layoutBotones.addWidget(self.btnCancelar)

			#creacion de formulario
			self.layoutPersona.addRow("cedula: ",self.cedula)
			self.cedula.setEnabled(False)
			self.layoutPersona.addRow("Nombre: ",self.nombre)
			self.layoutPersona.addRow("Apellido: ",self.apellido)
			self.layoutPersona.addRow("sexo: ",self.sexo)
			self.layoutPersona.addRow("Fecha Nacimiento",self.calendarioFecha)
			self.layoutPersona.addRow("Estado Civil: ",self.estadoCivil)
			self.layoutPersona.addRow("Ocupacion: ",self.ocupacion)
			self.layoutPersona.addRow("Lugar Trabajo: ",self.lugarTrabajo)
			self.layoutPersona.addRow("Telefono: ",self.telefono)
			self.layoutPersona.addRow("Direccion: ",self.direccion)

			#creacion de layout busqueda
			self.layoutBusqueda.addRow(self.comboBusqueda,self.txtBusqueda)

			#agregamos los layout a la ventana
			self.contenedor.addLayout(self.layoutBusqueda)
			self.contenedor.addWidget(self.Personas)
			self.contenedor.addWidget(self.btnSeleccionar)
			self.contenedor.addLayout(self.layoutPersona)
			self.contenedor.addLayout(self.layoutBotones)

			#tablas
			self.manejador = ManejadorBD()
			self.headers= [u"Cédula", "Nombres", "Apellidos", "Sexo", "Fecha de Nacimiento", "Estado Civil",
			u"Ocupación", "Lugar de Trabajo", u"Teléfono", u"Dirección"]
			self.Personas.setHeader(self.headers)
			self.Personas.addTable(self.manejador.consultarPersonas())

			self.txtBusqueda.textChanged.connect(self.Personas.on_lineEdit_textChanged)
			self.comboBusqueda.currentIndexChanged.connect(self.Personas.on_comboBox_currentIndexChanged)
			self.modoSeleccion()
			self.connect(self.btnSeleccionar,SIGNAL("clicked()"),self.clik_Seleccionar)
			self.connect(self.btnGuardar,SIGNAL("clicked()"),self.clik_Guardar)
			self.connect(self.btnCancelar,SIGNAL("clicked()"),self.clik_Cancelar)
			self.P=[]
			
	def seleccionarPersona(self):
		self.P=self.Personas.getSelectedRegister()


	def modoSeleccion(self):
		self.btnCancelar.setEnabled(False)
		self.btnGuardar.setEnabled(False)
		self.btnSeleccionar.setEnabled(True)



	def modoEdicion(self):
		self.btnCancelar.setEnabled(True)
		self.btnGuardar.setEnabled(True)
		self.btnSeleccionar.setEnabled(False)

	def clik_Seleccionar(self):
		self.seleccionarPersona()
		if(len(self.P)!=0):
			persona=self.P[len(self.P)-1]
			self.llenarPersona(persona)
			self.P=[]
			self.modoEdicion()
		else:
			QMessageBox.about(self,'Error!',u'Seleccione una Persona')
			

	def llenarPersona(self,l):
		self.cedula.setText(l[0])
		self.nombre.setText(l[1])
		self.apellido.setText(l[2])
		if(l[3]=="Masculino"):
			self.sexo.setCurrentIndex(0)
		else:
			self.sexo.setCurrentIndex(1)
		# se necesita un QDate
		#self.calendarioFecha.setSelectedDate (l[4])
		if(l[5]==self.lEstadoCivil[0]):
			self.estadoCivil.setCurrentIndex(0)
		elif(l[5]==self.lEstadoCivil[1]):
			self.estadoCivil.setCurrentIndex(1)
		elif(l[5]==self.lEstadoCivil[2]):
			self.estadoCivil.setCurrentIndex(2)
		elif(l[5]==self.lEstadoCivil[3]):
			self.estadoCivil.setCurrentIndex(3)
		elif(l[5]==self.lEstadoCivil[4]):
			self.estadoCivil.setCurrentIndex(4)
		self.ocupacion.setText(l[6])
		self.lugarTrabajo.setText(l[7])
		self.telefono.setText(l[8])
		self.direccion.setText(l[9])

	def limpiar(self):
		self.cedula.setText("")
		self.nombre.setText("")
		self.apellido.setText("")
		self.sexo.setCurrentIndex(0)
		self.estadoCivil.setCurrentIndex(0)
		self.ocupacion.setText("")
		self.lugarTrabajo.setText("")
		self.telefono.setText("")
		self.direccion.setText("")

	def clik_Cancelar(self):
		self.modoSeleccion()
		self.limpiar()

	def clik_Guardar(self):
		self.fecha=self.calendarioFecha.selectedDate()
		datos=(self.cedula.displayText(),self.nombre.displayText(),self.apellido.displayText(),self.sexo.currentText(),self.fecha,
					self.estadoCivil.currentText(),self.ocupacion.displayText(),self.lugarTrabajo.displayText(),self.telefono.displayText(),
					self.direccion.displayText())
		self.modoSeleccion()
		self.limpiar()
		try:
			self.manejador.actualizarPersona(datos)
			QMessageBox.about(self,'Informacion!',u'Se ha actualizado correctamente la persona')
			self.Actualizar_Personas()
		except:
			QMessageBox.about(self,'Error!',u'No se ha podido actualizar a la Persona')

	def Actualizar_Personas(self):
		self.Personas.deleteData()
		self.Personas.addTable(self.manejador.consultarPersonas())
class VistaEstudiantes(QWidget):
	dimension_x=400
	dimension_y=500
	
	def __init__(self,*args):
			QWidget.__init__(self,*args)
			self.setGeometry(100,50,self.dimension_x,self.dimension_y)
			self.contenedor = QVBoxLayout() #layout principal de esta gui, los widgets se agregan de forma vertical
			self.setLayout(self.contenedor)


			#elementos de la tabla
			self.headersTabla = [u"Matrícula",u"Número de cédula", "Nombres", "Apellidos","Sexo", 
			"Estado Civil","Origen", "Etnia", "Fecha de Nacimiento"]
			self.manejadorBD = ManejadorBD() #manejador de la base de datos

			#componentes que iran en la ventana
			self.tipoBusqueda=[u"Matrícula",u"Cédula","Nombres","Apellidos"] #items del combo box
			self.paramBusqueda = QLineEdit() #entrada de texto usada para ingresar el parametro de busqueda seccion Consultas
			self.comboBusquedaEstudiante=QComboBox() #tipos de usuario mostrados en un combo box
			self.comboBusquedaEstudiante.addItems(self.tipoBusqueda)
			self.botonSeleccionar = QPushButton("Seleccionar") 


			#elementos de la pestaña de edicion
			self.btnEditar = QPushButton("Editar")
			self.btnEditar.setIcon(QIcon("Imagenes/editar.jpg"))
			self.connect(self.btnEditar,SIGNAL("clicked()"),self.activarEdicion)
			self.btnGuardar = QPushButton("Guardar")
			self.btnGuardar.setIcon(QIcon("Imagenes/guardar.jpg"))
			self.connect(self.btnGuardar,SIGNAL("clicked()"),self.accionGuadarEdicion)
			#labels que muestran informacion 
			self.labelsDatosEstudiantes = [QLabel(""),  QLabel(""), QLabel(""), QLabel(""), QLabel(""),QLabel(""), QLabel(""), QLabel(""), QLabel("") ]
			
			#lables que muestran informacion del padre

			self.labelsDatosPadre = [ QLabel(""), QLabel(""), QLabel(""), QLabel(""), QLabel(""),
			QLabel(""), QLabel(""), QLabel(""), QLabel(""), QLabel("") ]

			#labels que muestran informacion de la madre

			self.labelsDatosMadre = [ QLabel(""), QLabel(""), QLabel(""), QLabel(""), QLabel(""),
			QLabel(""), QLabel(""), QLabel(""), QLabel(""), QLabel("") ]
			
			#lables que muestran informacion del representante

			self.labelsDatosRep = [ QLabel(""), QLabel(""), QLabel(""), QLabel(""), QLabel(""),
			QLabel(""), QLabel(""), QLabel(""), QLabel(""), QLabel("") ]

			#variables de la pestaña de edicion
			self.listsexos=["Masculino","Femenino"] #lista para escoger el tipo de usuario
			self.listEstCivil = ["Soltero","Casado","Divorsiado","Union Libre","Viudo" ]
			self.listEtnia = ["BLANCO","MESTIZO","AFROECUATORIANO","INDIGENA", "MONTUBIO","NEGRO","MULATO","OTROS"]

			

			#lineas de texto para deditar al estudiante
			#se guardan en este orden los campos:
			#cedula, nombre, apellido,sexo(combobox), estadocivil(combobox), origen, etnia(combobox), fechanacimiento

			self.textDatosEstudiantes = [ QLineEdit(), QLineEdit(), QLineEdit(), QComboBox(), QComboBox(),
			QLineEdit(), QComboBox(), QLineEdit()]

			#expresiones regulares para los nombres
			self.regex = QRegExp(u"^[À-Ÿà-ÿA-Za-z\\s*\\u'\xf1'*]+$")
			self.validator = QRegExpValidator(self.regex)

			#expresiones regulares para la cedula
			self.regexN = QRegExp("[0-9]*")
			self.validatorN = QRegExpValidator(self.regexN)
						
			#itero los QLineEdit y les seteo la expresion regular y que sean solo de lectura
			for i in [0,1,2,5]:
				self.textDatosEstudiantes[i].setReadOnly(True)
			
			for i in [1,2,5]:
				self.textDatosEstudiantes[i].setValidator(self.validator)
			
			self.textDatosEstudiantes[0].setValidator(self.validatorN)

			
			#agrego la tabla de alumnos
			self.alumnos=MyTable(self)
			self.alumnos.setHeader(self.headersTabla)
			self.alumnos.addTable(self.manejadorBD.consultarEstudiante())
			self.paramBusqueda.textChanged.connect(self.alumnos.on_lineEdit_textChanged)
			self.comboBusquedaEstudiante.currentIndexChanged.connect(self.alumnos.on_comboBox_currentIndexChanged)
			self.alumnos.setEditable(False)
			
			
			# creacion de pestañas
			tab_widget = QTabWidget()
			tab_consultas = QScrollArea () #se crean dos pestañas
			tab_consultas.setWidget(QWidget())
			tab_consultas. setWidgetResizable ( True )
			tab_edicion = QScrollArea ()
			tab_edicion.setWidget(QWidget())
			tab_edicion.setWidgetResizable(True)
			
			#agrego las pestañas
			self.cont_consulta = QVBoxLayout(tab_consultas.widget()) #layout principal de esta gui, los widgets se agregan de forma horizontal
			self.cont_edicion = QVBoxLayout(tab_edicion.widget())
			
			tab_widget.addTab(tab_consultas,u"Consultas")
			tab_widget.addTab(tab_edicion,u"Edición")
			
			self.llenarTabConsultas()
			self.llenarTabEdicion()
			self.layoutBusqueda=QHBoxLayout()
			self.layoutBusqueda.addWidget(self.comboBusquedaEstudiante)
			self.layoutBusqueda.addWidget(self.paramBusqueda)
			self.contenedor.addLayout(self.layoutBusqueda)
			self.contenedor.addWidget(self.alumnos)
			self.contenedor.addWidget(tab_widget)

			self.connect(self.botonSeleccionar,SIGNAL("clicked()"),self.seleccionarEstudiante)
	
	def llenarTabConsultas(self):
		"""
		Esta funcion sirve para llenar los elementos de la pestaña consultas
		"""
		contenidoTab = self.cont_consulta
		
		# aqui estoy creando la primera fila de la pestaña
		primeraFila = QHBoxLayout()
		primeraFila.addWidget(self.botonSeleccionar)
		contenidoTab.addLayout(primeraFila)
		
		#creacion de la tercera fila
		terceraFila = QHBoxLayout()
		GBoxEstudianteInfo = QGroupBox ( "Estudiante" )
		vboxEstInfo = QFormLayout()
		GBoxEstudianteInfo.setLayout(vboxEstInfo)
		terceraFila.addWidget(GBoxEstudianteInfo)
		
		listDatosEst = [u"Número de matrícula",u"Cédula:","Nombres:","Apellidos:", "Sexo:","Estado Civil:","Origen:","Etnia:" ,"Fecha de nacimiento:"]
		
		for i in range (0,9):
			vboxEstInfo.addRow(listDatosEst[i], self.labelsDatosEstudiantes[i])


		GBoxPadreInfo = QGroupBox ( "Padre" )
		vboxPadreInfo = QFormLayout()
		GBoxPadreInfo.setLayout(vboxPadreInfo)
		terceraFila.addWidget(GBoxPadreInfo)
		
		listDatosPersona = [u"Cédula:","Nombres:","Apellidos:","Sexo:","Fecha de Nacimiento:","Estado Civil:",u"Ocupación",
		"Lugar de Trabajo:",u"Teléfono:", u"Dirección:"]

		for i in range (0,10):
			vboxPadreInfo.addRow(listDatosPersona[i], self.labelsDatosPadre[i])

		contenidoTab.addLayout(terceraFila)
		#cuarta fila
		cuartaFila = QHBoxLayout()
		GBoxMadreInfo = QGroupBox ( "Madre" )
		vboxMadreInfo = QFormLayout()
		GBoxMadreInfo.setLayout(vboxMadreInfo)
		cuartaFila.addWidget(GBoxMadreInfo)
		
		for i in range (0,10):
			vboxMadreInfo.addRow(listDatosPersona[i], self.labelsDatosMadre[i])

		GBoxRepInfo = QGroupBox ( "Representante" )
		vboxRepInfo = QFormLayout()
		GBoxRepInfo.setLayout(vboxRepInfo)
		cuartaFila.addWidget(GBoxRepInfo)
		contenidoTab.addLayout(cuartaFila)

		for i in range (0,10):
			vboxRepInfo.addRow(listDatosPersona[i], self.labelsDatosRep[i])



	def llenarTabEdicion(self):
		"""
		Esta funcion sirve para llenar los elementos de la pestaña consultas
		"""
		contenidoTab = self.cont_edicion
		listDatosEst = [u"Cédula","Nombres:","Apellidos:", "Sexo:","Estado Civil:","Origen:","Etnia:"]
		primerafila = QHBoxLayout();
		primerafila.addWidget(self.btnEditar)
		contenidoTab.addLayout(primerafila)
		form_layout = QFormLayout()

		for i in range (0,7):
			form_layout.addRow(listDatosEst[i], self.textDatosEstudiantes[i])

		self.fechaNacimiento=QCalendarWidget()
		self.fechaNacimiento.setMinimumDate(QDate(1940,1,1))
		self.fechaNacimiento.setMaximumDate(QDate(2015,1,1))
		self.fechaNacimiento.setGridVisible(False)
		fechacont = QVBoxLayout()
		fechacont.addWidget(self.textDatosEstudiantes[7])
		fechacont.addWidget(self.fechaNacimiento)

		form_layout.addRow("Fecha de Nacimiento", fechacont)
		contenidoTab.addLayout(form_layout)

		terceraFila = QHBoxLayout()
		terceraFila.addWidget(self.btnGuardar)
		terceraFila.addWidget(QLabel("                   "))

		contenidoTab.addLayout(terceraFila)
		self.textDatosEstudiantes[3].addItems(self.listsexos)
		self.textDatosEstudiantes[4].addItems(self.listEstCivil)
		self.textDatosEstudiantes[6].addItems(self.listEtnia)






	def activarEdicion(self):
		#obtengo los estudiantes de la tabla
		Listestudiante = self.alumnos.getSelectedRegister()
		
		if Listestudiante:
			estudiante = Listestudiante[-1]
			self.matricula = str(estudiante[0])
			cedula = str(estudiante[1])
			self.textDatosEstudiantes[0].setText(cedula) #seteo la cedula
			nombres = unicode(estudiante[2])
			self.textDatosEstudiantes[1].setText(nombres) #seteo los nombres
			apellidos = unicode(estudiante[3])
			self.textDatosEstudiantes[2].setText(apellidos) #seteo los apellidos

			#seteo el sexo
			sexo = str(estudiante[4])
			indiceComboSexo = self.listsexos.index(sexo)
			self.textDatosEstudiantes[3].setCurrentIndex(indiceComboSexo)

			#seteo el estado civil
			ecivil = str(estudiante[5])
			indiceComboEstCivil = self.listEstCivil.index(ecivil)
			self.textDatosEstudiantes[4].setCurrentIndex(indiceComboEstCivil)
			
			origen = unicode(estudiante[6])
			self.textDatosEstudiantes[5].setText(origen) #seteo el origen
			
			#seteo la etnia
			etnia = unicode(estudiante[7])
			indiceComboetnia = self.listEtnia.index(etnia)
			self.textDatosEstudiantes[6].setCurrentIndex(indiceComboetnia) #seteo los apellidos

			#seteo la fecha
			fecha = str(estudiante[8])
			self.textDatosEstudiantes[7].setText(fecha)
			self.cedulafact = str(estudiante[8])

			faux = fecha.split("-")
			anos = int(faux[0])
			mes = int(faux[1])
			dia = int(faux[2])
			self.fechaNacimiento.setSelectedDate(QDate(anos, mes, dia)) 
			

			for i in [0,1,2,5,7]:
				self.textDatosEstudiantes[i].setReadOnly(False)


	def accionGuadarEdicion(self):

		cedula = str(self.textDatosEstudiantes[0].displayText())
		nombre = unicode(self.textDatosEstudiantes[1].displayText())
		apellido = unicode(self.textDatosEstudiantes[2].displayText())
		sexo = str(self.textDatosEstudiantes[3].currentText())
		estado_civil = str(self.textDatosEstudiantes[4].currentText())
		origen = unicode(self.textDatosEstudiantes[5].displayText())
		etnia = str(self.textDatosEstudiantes[6].currentText())
		fecha = self.obtenerFechaString( self.fechaNacimiento.selectedDate())

		tupla = (self.matricula, cedula, nombre, apellido, sexo, estado_civil, origen, etnia, fecha)
		print tupla

		if (not(len(cedula)==10)):
			QMessageBox.about(self, 'Error',u'Cédula inválida: debe tener 10 dígitos')
		elif (cedula =="" or nombre == "" or apellido == "" or origen =="" ):
			QMessageBox.about(self, 'Error',u'Datos sin llenar: llene todos los datos')
		else:
			QMessageBox.about(self,"Aviso",u'Se han guardado los cambios con éxito')
			self.manejadorBD.editarEstudiante(tupla)
			for i in [0,1,2,5]:
				self.textDatosEstudiantes[i].setReadOnly(True)




	def seleccionarEstudiante(self):
		Listestudiante = self.alumnos.getSelectedRegister()
		
		#Si esa  lista no esta vacia se obtienen los datos
		if Listestudiante:
			estudiante = Listestudiante[-1]
			#lleno los campos de la seccion estudiante
			for i in range (len(self.labelsDatosEstudiantes )):
				label= self.labelsDatosEstudiantes[i]
				label.setText(estudiante[i])

			numMatricula= estudiante[0]
			result = self.manejadorBD.estudianteObtenerPersona(numMatricula, "Padre")
			
			if  result:
				datosPadre = list(result[0])
				for i in range (len(self.labelsDatosPadre )):
					label= self.labelsDatosPadre[i]
					label.setText(unicode(datosPadre[i]))
			else:
				for i in range (len(self.labelsDatosPadre )):
					label= self.labelsDatosPadre[i]
					label.setText("")


			result = self.manejadorBD.estudianteObtenerPersona(numMatricula, "Madre")
			if result:
				datosMadre = list(result[0])

				for i in range (len(self.labelsDatosMadre )):
					label= self.labelsDatosMadre[i]
					label.setText(unicode(datosMadre[i]))
			else:
				for i in range (len(self.labelsDatosMadre )):
					label= self.labelsDatosMadre[i]
					label.setText("")


			result = self.manejadorBD.estudianteObtenerPersona(numMatricula, "Representante")
			if result:
				datosRep = list(result[0])

				for i in range (len(self.labelsDatosRep )):
					label= self.labelsDatosRep[i]
					label.setText(unicode(datosRep[i]))
			else:

				for i in range (len(self.labelsDatosRep )):
					label= self.labelsDatosRep[i]
					label.setText("")


	def obtenerFechaString(self,date):
		dia=date.day()
		mes=date.month()
		anio=date.year()
		return "%d-%d-%d" %(anio,mes,dia)
Пример #20
0
#!/usr/bin/python
 
import MySQLdb
import sys
import time
import threading
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from VistaIngresoSist import*
from ManejadorBD import *

M=ManejadorBD()
M.imprimirTablas()
r=M.consulta("SELECT * FROM Reviewer")
print "Sin Condiciones"
for (a,b) in r:
	print a,",",b

r=M.consulta("SELECT * FROM Reviewer WHERE name like %s",("c%"))
print "Usando Condiciones"
for (a,b) in r:
	print a,",",b
app = QApplication(sys.argv)
vista1 = VistaIngresoSist()
vista1.show()
app.exec_()
Пример #21
0
    def __init__(self, *args):
        QWidget.__init__(self, *args)
        self.setGeometry(100, 50, self.dimension_x, self.dimension_y)
        self.contenedor = QVBoxLayout(
        )  #layout principal de esta gui, los widgets se agregan de forma horizontal
        self.setLayout(self.contenedor)
        #creamos las opciones
        self.tab_widget = QTabWidget()
        tab_Nuevo = QWidget()
        self.tab_ElegirDirigente = QWidget()
        self.tab_ProfesorMateria = QWidget()

        self.layoutNuevo = QVBoxLayout()
        self.layoutAgregar = QVBoxLayout()
        tab_Nuevo.setLayout(self.layoutNuevo)
        self.tab_widget.addTab(tab_Nuevo, "Curso")
        self.tab_widget.addTab(self.tab_ProfesorMateria,
                               "Asignar Profesor a Materias")
        self.tab_widget.addTab(self.tab_ElegirDirigente,
                               "Asignar Dirigente a Curso")
        self.contenedorNuevo = QVBoxLayout()
        #botones
        self.btnCrear = QPushButton("Crear")
        self.connect(self.btnCrear, SIGNAL("clicked()"), self.accionCrear)
        self.btnActualizar = QPushButton("Guardar")
        self.connect(self.btnActualizar, SIGNAL("clicked()"),
                     self.accionGuardar)
        self.btnCancelar = QPushButton("Cancelar")
        self.connect(self.btnCancelar, SIGNAL("clicked()"),
                     self.accionCancelar)
        #layaouts
        self.Cursos = MyTable(self)
        self.contenedor.addWidget(QLabel("Cursos"))
        self.contenedor.addWidget(self.Cursos)

        self.botonCurso = QPushButton("Mostrar Informacion del Curso")
        self.connect(self.botonCurso, SIGNAL("clicked()"),
                     self.obtenerInfoCurso)
        self.contenedor.addWidget(self.botonCurso)

        self.contenedor.addWidget(self.tab_widget)

        self.layoutCurso1 = QFormLayout()
        self.layoutCurso2 = QHBoxLayout()
        self.layoutNuevo.addLayout(self.layoutCurso1)
        self.layoutNuevo.addLayout(self.layoutCurso2)

        #definicion cajas de texto
        self.aLectivo = QLineEdit()
        self.curso = QComboBox()
        self.paralelo = QLineEdit()
        self.listaCurso = [
            "Kinder", "Primero", "Segundo", "Tercero", "Cuarto", "Quinto",
            "Sexto", "Septimo"
        ]
        self.curso.addItems(self.listaCurso)
        #creacion de formulario
        self.layoutCurso1.addRow("Ano Lectivo: ", self.aLectivo)
        self.layoutCurso1.addRow("curso: ", self.curso)
        self.layoutCurso1.addRow("Paralelo: ", self.paralelo)
        self.layoutCurso2.addWidget(self.btnCrear)
        self.layoutCurso2.addWidget(self.btnActualizar)
        self.layoutCurso2.addWidget(self.btnCancelar)

        #agrego datos a la tabla
        self.manejador = ManejadorBD()
        self.HeadersCurso = [
            u"Código", u"Número", u"Año Lectivo", "Paralelo",
            u"Cédula Dirigente"
        ]
        self.Cursos.setHeader(self.HeadersCurso)
        self.Cursos.addTable(self.manejador.obtenerCursos())
        self.Cursos.setEditable(False)

        self.btnLigar = QPushButton("Ligar")
        self.connect(self.btnLigar, SIGNAL("clicked()"), self.ligar)
        self.btnDesLigar = QPushButton("DesLigar")
        self.connect(self.btnDesLigar, SIGNAL("clicked()"), self.desligar)
        self.layoutProfesorMateria = QHBoxLayout()
        self.materiasConProfesor = [
        ]  #almacenara las tuplas Materia,Profesor que se debera cargar en la base de datos

        self.layoutProfesorMateria1 = QVBoxLayout()
        self.layoutProfesorMateria2 = QVBoxLayout()
        self.layoutProfesorMateria3 = QVBoxLayout()
        self.layoutProfesorMateria4 = QVBoxLayout()

        self.MateriasSinProfesor = MyTable(self.tab_widget)
        self.MateriasSinProfesor.setHeader(["Codigo", "Nombre"])
        self.MateriasProfesor = MyTable(self.tab_widget)
        self.MateriasProfesor.setHeader([
            "", "Materia Asignada", "", "Nombres del Profesor",
            "Apellidos del Profesor"
        ])
        self.MateriasProfesor.hideColumn(0)
        self.MateriasProfesor.hideColumn(2)

        self.Profesores = MyTable(self.tab_widget)
        self.Profesores.setHeader([u"Cédula", "Nombre", "Apellido"])
        self.Profesores.addTable(self.manejador.consultarProfesores())
        self.Profesores.setEditable(False)

        self.layoutProfesorMateria1.addWidget(QLabel("Materias sin Profesor"))
        self.layoutProfesorMateria1.addWidget(self.MateriasSinProfesor)
        self.layoutProfesorMateria2.addWidget(QLabel("Profesores"))
        self.layoutProfesorMateria2.addWidget(self.Profesores)
        self.layoutProfesorMateria3.addWidget(self.btnLigar)
        self.layoutProfesorMateria3.addWidget(self.btnDesLigar)
        self.layoutProfesorMateria4.addWidget(QLabel("Materia Profesor"))
        self.layoutProfesorMateria4.addWidget(self.MateriasProfesor)

        self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria1)
        self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria2)
        self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria3)
        self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria4)
        self.tab_ProfesorMateria.setLayout(self.layoutProfesorMateria)
        self.modoConsulta()
        self.paralelo.setEnabled(False)
        self.layoutDirigente = QHBoxLayout()
        self.ProfesoresDirigentes = MyTable(self.tab_widget)
        self.ProfesoresDirigentes.setHeader([u"Cédula", "Nombre", "Apellido"])
        self.ProfesoresDirigentes.addTable(
            self.manejador.consultarProfesores())
        self.btnAsignarDirigente = QPushButton("Asignar Dirigente")
        self.layoutDirigente.addWidget(self.ProfesoresDirigentes)
        self.layoutDirigente.addWidget(self.btnAsignarDirigente)
        self.tab_ElegirDirigente.setLayout(self.layoutDirigente)
        self.connect(self.btnAsignarDirigente, SIGNAL("clicked()"),
                     self.ligarDirigente)
Пример #22
0
    def __init__(self, curso, *args):
        QWidget.__init__(self, *args)
        self.setWindowTitle("Consulta Notas")
        self.showMaximized()
        self.cursoSeleccionado = curso
        self.materia = self.cursoSeleccionado[0]
        self.idCurso = self.cursoSeleccionado[1]
        primerQuimestre = 0
        segundoQuimestre = 1
        examenes = 2
        self.manejador = ManejadorBD()
        self.contenedor = QVBoxLayout()

        #definicion de las tablas en donde se insertaran los datos
        self.Estudiantes = [
            MyTable(self), MyTable(self),
            MyTable(self)
        ]  #grid 0 para primer quimestre, 1 para segundo y 2 para los examenes
        self.manejador = ManejadorBD()

        #Primer Quimestre
        self.Estudiantes[primerQuimestre].setHeader([
            "Numero Matricula", "Apellidos", "Nombres", "Primer Parcial ",
            "Segundo Parcial ", "Tercer Parcial", "Examen", "Promedio"
        ])
        self.Estudiantes[primerQuimestre].hideColumn(
            0)  #esconde la columna del numero de matricula
        self.notas_parciales_uno = self.manejador.consultarNotasParcial(
            self.idCurso, self.materia, 1)
        self.examen_quimestre_uno = self.manejador.consultarExamenPorQuimestre(
            self.idCurso, self.materia, 1)
        self.notas_quimestre_uno = self.unir(self.notas_parciales_uno,
                                             self.examen_quimestre_uno)
        self.Estudiantes[primerQuimestre].addTable(self.notas_quimestre_uno)
        self.Estudiantes[primerQuimestre].setEditable(False)

        #Segundo Quimestre
        self.Estudiantes[segundoQuimestre].setHeader([
            "Numero Matricula", "Apellidos", "Nombres", "Primer Parcial ",
            "Segundo Parcial ", "Tercer Parcial", "Examen", "Promedio"
        ])
        self.Estudiantes[segundoQuimestre].hideColumn(
            0)  #esconde la columna del numero de matricula
        self.notas_parciales_dos = self.manejador.consultarNotasParcial(
            self.idCurso, self.materia, 2)
        self.examen_quimestre_dos = self.manejador.consultarExamenPorQuimestre(
            self.idCurso, self.materia, 2)
        self.notas_quimestre_dos = self.unir(self.notas_parciales_dos,
                                             self.examen_quimestre_dos)
        self.Estudiantes[segundoQuimestre].addTable(self.notas_quimestre_dos)
        self.Estudiantes[segundoQuimestre].setEditable(False)

        self.tab_uno = QTabWidget()
        self.pestanias = [QWidget(), QWidget(), QWidget()]  #pestañas

        #layouts
        self.layout_uno = QVBoxLayout()
        self.layout_uno.addWidget(self.Estudiantes[primerQuimestre])
        self.pestanias[primerQuimestre].setLayout(self.layout_uno)
        self.layout_dos = QVBoxLayout()
        self.layout_dos.addWidget(self.Estudiantes[segundoQuimestre])
        self.pestanias[segundoQuimestre].setLayout(self.layout_dos)

        self.tab_uno.addTab(self.pestanias[primerQuimestre],
                            "Notas Primer Quimestre")
        self.tab_uno.addTab(self.pestanias[segundoQuimestre],
                            "Notas Segundo Quimestre")
        self.tab_uno.addTab(self.pestanias[examenes], "Notas Examenes")

        self.contenedor.addWidget(
            QLabel("Materia: " + self.cursoSeleccionado[0]))
        self.contenedor.addWidget(self.tab_uno)
        self.setLayout(self.contenedor)
Пример #23
0
class VistaSemestre(QWidget):
    def __init__(self, numQuimestre, curso, materia, *args):
        QWidget.__init__(self, *args)
        self.layout_uno = QVBoxLayout()
        self.tab_uno = QTabWidget()  #parciales
        self.parciales_uno = [QWidget(),
                              QWidget(),
                              QWidget(),
                              QWidget()
                              ]  #pestañas con los parciales y el examen
        self.layouts = [
            QVBoxLayout(),
            QVBoxLayout(),
            QVBoxLayout(),
            QVBoxLayout()
        ]  #layouts para cada pestaña

        self.layoutHorizontal = [QHBoxLayout(),
                                 QHBoxLayout(),
                                 QHBoxLayout()]  #layouts para los espacios

        self.manejador = ManejadorBD()
        self.botonesGuardar = [
            QPushButton("Guardar"),
            QPushButton("Guardar"),
            QPushButton("Guardar"),
            QPushButton("Guardar")
        ]  #botones para guardar las notas que se ingresen
        self.idCurso = str(curso)
        self.materia = str(materia)
        self.numQuimestre = numQuimestre
        self.initTab()
        self.setLayout(self.layout_uno)
        self.botonesGuardar[0].clicked.connect(
            lambda: self.guardarNotasActividades(1))
        self.botonesGuardar[1].clicked.connect(
            lambda: self.guardarNotasActividades(2))
        self.botonesGuardar[2].clicked.connect(
            lambda: self.guardarNotasActividades(3))
        self.botonesGuardar[3].clicked.connect(
            lambda: self.guardarNotasExamenes())

    def initTab(self):
        self.tab_uno.addTab(self.parciales_uno[0], "1er Parcial")
        self.tab_uno.addTab(self.parciales_uno[1], "2do Parcial")
        self.tab_uno.addTab(self.parciales_uno[2], "3er Parcial")
        self.tab_uno.addTab(self.parciales_uno[3], "Examen")
        self.estudiantes = [
            MyTable(self),
            MyTable(self),
            MyTable(self),
            MyTable(self)
        ]
        consulta = []
        for i in range(3):
            self.layouts[i].addWidget(QLabel("Lista de Estudiantes:"))
            consulta = self.manejador.consultarEstudiantesPorMateria(
                self.idCurso, self.materia, self.numQuimestre, i + 1)
            self.estudiantes[i].setHeader([
                "Matricula", "Apellidos", "Nombres", "En Clase", "En Grupo",
                "Examen", "Individual", "Leccion"
            ])
            self.estudiantes[i].addTable(self.ordenarDatos(consulta))
            self.estudiantes[i].hideColumn(0)  #esconde la columna matricula
            self.layouts[i].addWidget(self.estudiantes[i])
            self.layouts[i].addWidget(self.botonesGuardar[i])
            self.parciales_uno[i].setLayout(self.layouts[i])

        #Componenes para la pestaáña de las notas del examen del quimestre
        examen = 3
        self.estudiantes[examen].setHeader(
            ["Matricula", "Apellidos", "Nombres", "Examen", ""])
        self.estudiantes[examen].hideColumn(
            0)  #se esconde la fila de la matricula
        self.layouts[examen].addWidget(self.estudiantes[examen])
        self.layouts[examen].addWidget(self.botonesGuardar[examen])
        resultados = self.manejador.consultarExamenPorQuimestre(
            self.idCurso, self.materia, self.numQuimestre)
        self.estudiantes[examen].addTable(resultados)
        self.estudiantes[examen].hideColumn(
            4)  #se esconde la fila del promedio
        self.parciales_uno[examen].setLayout(self.layouts[examen])
        self.layout_uno.addWidget(
            self.tab_uno)  #se añaden las pestañas de los parciales y el examen

    def ordenarDatos(self, lista):
        resultados = []
        registro_actual = []
        registro_siguiente = []
        i = 0
        acumular = 0
        while i < len(lista):
            registro_actual = lista[i]
            registro_nuevo = []
            registro_siguiente = []
            registro_nuevo.append(registro_actual[0])
            registro_nuevo.append(registro_actual[1])
            registro_nuevo.append(registro_actual[2])
            registro_nuevo.append(registro_actual[4])
            j = 0
            for j in range(1, 5):
                registro_siguiente = lista[acumular + j]
                registro_nuevo.append(registro_siguiente[4])
            resultados.append(registro_nuevo)
            acumular = acumular + 5
            i = acumular
        return resultados

    def guardarNotasActividades(self, Parcial):
        try:
            resultados = []
            for i in range(self.estudiantes[Parcial - 1].getSize()):
                registro = self.estudiantes[Parcial - 1].getRegister(i)
                print "registro:" + str(registro)
                j = 0
                for j in range(5):
                    registro_nuevo = []
                    registro_nuevo.append(unicode(registro[0]))
                    registro_nuevo.append(unicode(registro[1]))
                    registro_nuevo.append(unicode(registro[2]))
                    registro_nuevo.append(unicode(registro[j + 3]))
                    resultados.append(registro_nuevo)
            tipoActividad = [
                "En Clase", "En Grupo", "Examen", "Individual", "Leccion"
            ]
            i = 0
            registro = []
            for registro in resultados:
                self.manejador.actualizarEstudianteActividad(
                    self.idCurso, self.materia, self.numQuimestre, Parcial,
                    tipoActividad[i], str(registro[0]), str(registro[3]))
                if i == 4:
                    self.manejador.actualizarNotasParcial(
                        self.idCurso, self.materia, self.numQuimestre, Parcial,
                        str(registro[0]))
                    self.manejador.actualizarNotaQuimestre(
                        self.idCurso, self.materia, self.numQuimestre,
                        str(registro[0]))
                    i = 0  #empieza a barrer de nuevo el arreglo tipo de actividad
                else:
                    i += 1
            QMessageBox.about(
                self, 'Aviso',
                u'Se han guardado las calificaciones de forma correcta')
        except:
            QMessageBox.about(self, 'Error', u'Inserte calificaciones validas')

    def guardarNotasExamenes(self):
        try:
            for i in range(self.estudiantes[3].getSize()):
                estudiante = self.estudiantes[3].getRegister(i)
                self.manejador.actualizarExamenPorQuimestre(
                    self.idCurso, self.materia, self.numQuimestre,
                    str(estudiante[0]), str(estudiante[3]))
                self.manejador.actualizarNotaQuimestre(self.idCurso,
                                                       self.materia,
                                                       self.numQuimestre,
                                                       str(estudiante[0]))
            QMessageBox.about(
                self, 'Aviso',
                u'Se han guardado las calificaciones de forma correcta')
        except:
            QMessageBox.about(self, 'Error', u'Inserte calificaciones validas')
Пример #24
0
class VistaEstudiantes(QWidget):
    dimension_x = 400
    dimension_y = 500

    def __init__(self, *args):
        QWidget.__init__(self, *args)
        self.setGeometry(100, 50, self.dimension_x, self.dimension_y)
        self.contenedor = QVBoxLayout(
        )  #layout principal de esta gui, los widgets se agregan de forma vertical
        self.setLayout(self.contenedor)

        #elementos de la tabla
        self.headersTabla = [
            u"Matrícula", u"Número de cédula", "Nombres", "Apellidos", "Sexo",
            "Estado Civil", "Origen", "Etnia", "Fecha de Nacimiento"
        ]
        self.manejadorBD = ManejadorBD()  #manejador de la base de datos

        #componentes que iran en la ventana
        self.tipoBusqueda = [u"Matrícula", u"Cédula", "Nombres",
                             "Apellidos"]  #items del combo box
        self.paramBusqueda = QLineEdit(
        )  #entrada de texto usada para ingresar el parametro de busqueda seccion Consultas
        self.comboBusquedaEstudiante = QComboBox(
        )  #tipos de usuario mostrados en un combo box
        self.comboBusquedaEstudiante.addItems(self.tipoBusqueda)
        self.botonSeleccionar = QPushButton("Seleccionar")

        #elementos de la pestaña de edicion
        self.btnEditar = QPushButton("Editar")
        self.btnEditar.setIcon(QIcon("Imagenes/editar.jpg"))
        self.connect(self.btnEditar, SIGNAL("clicked()"), self.activarEdicion)
        self.btnGuardar = QPushButton("Guardar")
        self.btnGuardar.setIcon(QIcon("Imagenes/guardar.jpg"))
        self.connect(self.btnGuardar, SIGNAL("clicked()"),
                     self.accionGuadarEdicion)
        #labels que muestran informacion
        self.labelsDatosEstudiantes = [
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel("")
        ]

        #lables que muestran informacion del padre

        self.labelsDatosPadre = [
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel("")
        ]

        #labels que muestran informacion de la madre

        self.labelsDatosMadre = [
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel("")
        ]

        #lables que muestran informacion del representante

        self.labelsDatosRep = [
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel("")
        ]

        #variables de la pestaña de edicion
        self.listsexos = ["Masculino",
                          "Femenino"]  #lista para escoger el tipo de usuario
        self.listEstCivil = [
            "Soltero", "Casado", "Divorsiado", "Union Libre", "Viudo"
        ]
        self.listEtnia = [
            "BLANCO", "MESTIZO", "AFROECUATORIANO", "INDIGENA", "MONTUBIO",
            "NEGRO", "MULATO", "OTROS"
        ]

        #lineas de texto para deditar al estudiante
        #se guardan en este orden los campos:
        #cedula, nombre, apellido,sexo(combobox), estadocivil(combobox), origen, etnia(combobox), fechanacimiento

        self.textDatosEstudiantes = [
            QLineEdit(),
            QLineEdit(),
            QLineEdit(),
            QComboBox(),
            QComboBox(),
            QLineEdit(),
            QComboBox(),
            QLineEdit()
        ]

        #expresiones regulares para los nombres
        self.regex = QRegExp(u"^[À-Ÿà-ÿA-Za-z\\s*\\u'\xf1'*]+$")
        self.validator = QRegExpValidator(self.regex)

        #expresiones regulares para la cedula
        self.regexN = QRegExp("[0-9]*")
        self.validatorN = QRegExpValidator(self.regexN)

        #itero los QLineEdit y les seteo la expresion regular y que sean solo de lectura
        for i in [0, 1, 2, 5]:
            self.textDatosEstudiantes[i].setReadOnly(True)

        for i in [1, 2, 5]:
            self.textDatosEstudiantes[i].setValidator(self.validator)

        self.textDatosEstudiantes[0].setValidator(self.validatorN)

        #agrego la tabla de alumnos
        self.alumnos = MyTable(self)
        self.alumnos.setHeader(self.headersTabla)
        self.alumnos.addTable(self.manejadorBD.consultarEstudiante())
        self.paramBusqueda.textChanged.connect(
            self.alumnos.on_lineEdit_textChanged)
        self.comboBusquedaEstudiante.currentIndexChanged.connect(
            self.alumnos.on_comboBox_currentIndexChanged)
        self.alumnos.setEditable(False)

        # creacion de pestañas
        tab_widget = QTabWidget()
        tab_consultas = QScrollArea()  #se crean dos pestañas
        tab_consultas.setWidget(QWidget())
        tab_consultas.setWidgetResizable(True)
        tab_edicion = QScrollArea()
        tab_edicion.setWidget(QWidget())
        tab_edicion.setWidgetResizable(True)

        #agrego las pestañas
        self.cont_consulta = QVBoxLayout(
            tab_consultas.widget()
        )  #layout principal de esta gui, los widgets se agregan de forma horizontal
        self.cont_edicion = QVBoxLayout(tab_edicion.widget())

        tab_widget.addTab(tab_consultas, u"Consultas")
        tab_widget.addTab(tab_edicion, u"Edición")

        self.llenarTabConsultas()
        self.llenarTabEdicion()
        self.layoutBusqueda = QHBoxLayout()
        self.layoutBusqueda.addWidget(self.comboBusquedaEstudiante)
        self.layoutBusqueda.addWidget(self.paramBusqueda)
        self.contenedor.addLayout(self.layoutBusqueda)
        self.contenedor.addWidget(self.alumnos)
        self.contenedor.addWidget(tab_widget)

        self.connect(self.botonSeleccionar, SIGNAL("clicked()"),
                     self.seleccionarEstudiante)

    def llenarTabConsultas(self):
        """
		Esta funcion sirve para llenar los elementos de la pestaña consultas
		"""
        contenidoTab = self.cont_consulta

        # aqui estoy creando la primera fila de la pestaña
        primeraFila = QHBoxLayout()
        primeraFila.addWidget(self.botonSeleccionar)
        contenidoTab.addLayout(primeraFila)

        #creacion de la tercera fila
        terceraFila = QHBoxLayout()
        GBoxEstudianteInfo = QGroupBox("Estudiante")
        vboxEstInfo = QFormLayout()
        GBoxEstudianteInfo.setLayout(vboxEstInfo)
        terceraFila.addWidget(GBoxEstudianteInfo)

        listDatosEst = [
            u"Número de matrícula", u"Cédula:", "Nombres:", "Apellidos:",
            "Sexo:", "Estado Civil:", "Origen:", "Etnia:",
            "Fecha de nacimiento:"
        ]

        for i in range(0, 9):
            vboxEstInfo.addRow(listDatosEst[i], self.labelsDatosEstudiantes[i])

        GBoxPadreInfo = QGroupBox("Padre")
        vboxPadreInfo = QFormLayout()
        GBoxPadreInfo.setLayout(vboxPadreInfo)
        terceraFila.addWidget(GBoxPadreInfo)

        listDatosPersona = [
            u"Cédula:", "Nombres:", "Apellidos:", "Sexo:",
            "Fecha de Nacimiento:", "Estado Civil:", u"Ocupación",
            "Lugar de Trabajo:", u"Teléfono:", u"Dirección:"
        ]

        for i in range(0, 10):
            vboxPadreInfo.addRow(listDatosPersona[i], self.labelsDatosPadre[i])

        contenidoTab.addLayout(terceraFila)
        #cuarta fila
        cuartaFila = QHBoxLayout()
        GBoxMadreInfo = QGroupBox("Madre")
        vboxMadreInfo = QFormLayout()
        GBoxMadreInfo.setLayout(vboxMadreInfo)
        cuartaFila.addWidget(GBoxMadreInfo)

        for i in range(0, 10):
            vboxMadreInfo.addRow(listDatosPersona[i], self.labelsDatosMadre[i])

        GBoxRepInfo = QGroupBox("Representante")
        vboxRepInfo = QFormLayout()
        GBoxRepInfo.setLayout(vboxRepInfo)
        cuartaFila.addWidget(GBoxRepInfo)
        contenidoTab.addLayout(cuartaFila)

        for i in range(0, 10):
            vboxRepInfo.addRow(listDatosPersona[i], self.labelsDatosRep[i])

    def llenarTabEdicion(self):
        """
		Esta funcion sirve para llenar los elementos de la pestaña consultas
		"""
        contenidoTab = self.cont_edicion
        listDatosEst = [
            u"Cédula", "Nombres:", "Apellidos:", "Sexo:", "Estado Civil:",
            "Origen:", "Etnia:"
        ]
        primerafila = QHBoxLayout()
        primerafila.addWidget(self.btnEditar)
        contenidoTab.addLayout(primerafila)
        form_layout = QFormLayout()

        for i in range(0, 7):
            form_layout.addRow(listDatosEst[i], self.textDatosEstudiantes[i])

        self.fechaNacimiento = QCalendarWidget()
        self.fechaNacimiento.setMinimumDate(QDate(1940, 1, 1))
        self.fechaNacimiento.setMaximumDate(QDate(2015, 1, 1))
        self.fechaNacimiento.setGridVisible(False)
        fechacont = QVBoxLayout()
        fechacont.addWidget(self.textDatosEstudiantes[7])
        fechacont.addWidget(self.fechaNacimiento)

        form_layout.addRow("Fecha de Nacimiento", fechacont)
        contenidoTab.addLayout(form_layout)

        terceraFila = QHBoxLayout()
        terceraFila.addWidget(self.btnGuardar)
        terceraFila.addWidget(QLabel("                   "))

        contenidoTab.addLayout(terceraFila)
        self.textDatosEstudiantes[3].addItems(self.listsexos)
        self.textDatosEstudiantes[4].addItems(self.listEstCivil)
        self.textDatosEstudiantes[6].addItems(self.listEtnia)

    def activarEdicion(self):
        #obtengo los estudiantes de la tabla
        Listestudiante = self.alumnos.getSelectedRegister()

        if Listestudiante:
            estudiante = Listestudiante[-1]
            self.matricula = str(estudiante[0])
            cedula = str(estudiante[1])
            self.textDatosEstudiantes[0].setText(cedula)  #seteo la cedula
            nombres = unicode(estudiante[2])
            self.textDatosEstudiantes[1].setText(nombres)  #seteo los nombres
            apellidos = unicode(estudiante[3])
            self.textDatosEstudiantes[2].setText(
                apellidos)  #seteo los apellidos

            #seteo el sexo
            sexo = str(estudiante[4])
            indiceComboSexo = self.listsexos.index(sexo)
            self.textDatosEstudiantes[3].setCurrentIndex(indiceComboSexo)

            #seteo el estado civil
            ecivil = str(estudiante[5])
            indiceComboEstCivil = self.listEstCivil.index(ecivil)
            self.textDatosEstudiantes[4].setCurrentIndex(indiceComboEstCivil)

            origen = unicode(estudiante[6])
            self.textDatosEstudiantes[5].setText(origen)  #seteo el origen

            #seteo la etnia
            etnia = unicode(estudiante[7])
            indiceComboetnia = self.listEtnia.index(etnia)
            self.textDatosEstudiantes[6].setCurrentIndex(
                indiceComboetnia)  #seteo los apellidos

            #seteo la fecha
            fecha = str(estudiante[8])
            self.textDatosEstudiantes[7].setText(fecha)
            self.cedulafact = str(estudiante[8])

            faux = fecha.split("-")
            anos = int(faux[0])
            mes = int(faux[1])
            dia = int(faux[2])
            self.fechaNacimiento.setSelectedDate(QDate(anos, mes, dia))

            for i in [0, 1, 2, 5, 7]:
                self.textDatosEstudiantes[i].setReadOnly(False)

    def accionGuadarEdicion(self):

        cedula = str(self.textDatosEstudiantes[0].displayText())
        nombre = unicode(self.textDatosEstudiantes[1].displayText())
        apellido = unicode(self.textDatosEstudiantes[2].displayText())
        sexo = str(self.textDatosEstudiantes[3].currentText())
        estado_civil = str(self.textDatosEstudiantes[4].currentText())
        origen = unicode(self.textDatosEstudiantes[5].displayText())
        etnia = str(self.textDatosEstudiantes[6].currentText())
        fecha = self.obtenerFechaString(self.fechaNacimiento.selectedDate())

        tupla = (self.matricula, cedula, nombre, apellido, sexo, estado_civil,
                 origen, etnia, fecha)
        print tupla

        if (not (len(cedula) == 10)):
            QMessageBox.about(self, 'Error',
                              u'Cédula inválida: debe tener 10 dígitos')
        elif (cedula == "" or nombre == "" or apellido == "" or origen == ""):
            QMessageBox.about(self, 'Error',
                              u'Datos sin llenar: llene todos los datos')
        else:
            QMessageBox.about(self, "Aviso",
                              u'Se han guardado los cambios con éxito')
            self.manejadorBD.editarEstudiante(tupla)
            for i in [0, 1, 2, 5]:
                self.textDatosEstudiantes[i].setReadOnly(True)

    def seleccionarEstudiante(self):
        Listestudiante = self.alumnos.getSelectedRegister()

        #Si esa  lista no esta vacia se obtienen los datos
        if Listestudiante:
            estudiante = Listestudiante[-1]
            #lleno los campos de la seccion estudiante
            for i in range(len(self.labelsDatosEstudiantes)):
                label = self.labelsDatosEstudiantes[i]
                label.setText(estudiante[i])

            numMatricula = estudiante[0]
            result = self.manejadorBD.estudianteObtenerPersona(
                numMatricula, "Padre")

            if result:
                datosPadre = list(result[0])
                for i in range(len(self.labelsDatosPadre)):
                    label = self.labelsDatosPadre[i]
                    label.setText(unicode(datosPadre[i]))
            else:
                for i in range(len(self.labelsDatosPadre)):
                    label = self.labelsDatosPadre[i]
                    label.setText("")

            result = self.manejadorBD.estudianteObtenerPersona(
                numMatricula, "Madre")
            if result:
                datosMadre = list(result[0])

                for i in range(len(self.labelsDatosMadre)):
                    label = self.labelsDatosMadre[i]
                    label.setText(unicode(datosMadre[i]))
            else:
                for i in range(len(self.labelsDatosMadre)):
                    label = self.labelsDatosMadre[i]
                    label.setText("")

            result = self.manejadorBD.estudianteObtenerPersona(
                numMatricula, "Representante")
            if result:
                datosRep = list(result[0])

                for i in range(len(self.labelsDatosRep)):
                    label = self.labelsDatosRep[i]
                    label.setText(unicode(datosRep[i]))
            else:

                for i in range(len(self.labelsDatosRep)):
                    label = self.labelsDatosRep[i]
                    label.setText("")

    def obtenerFechaString(self, date):
        dia = date.day()
        mes = date.month()
        anio = date.year()
        return "%d-%d-%d" % (anio, mes, dia)
Пример #25
0
class VistaCurso(QWidget):
    dimension_x = 400
    dimension_y = 500

    def __init__(self, *args):
        QWidget.__init__(self, *args)
        self.setGeometry(100, 50, self.dimension_x, self.dimension_y)
        self.contenedor = QVBoxLayout(
        )  #layout principal de esta gui, los widgets se agregan de forma horizontal
        self.setLayout(self.contenedor)
        #creamos las opciones
        self.tab_widget = QTabWidget()
        tab_Nuevo = QWidget()
        self.tab_ElegirDirigente = QWidget()
        self.tab_ProfesorMateria = QWidget()

        self.layoutNuevo = QVBoxLayout()
        self.layoutAgregar = QVBoxLayout()
        tab_Nuevo.setLayout(self.layoutNuevo)
        self.tab_widget.addTab(tab_Nuevo, "Curso")
        self.tab_widget.addTab(self.tab_ProfesorMateria,
                               "Asignar Profesor a Materias")
        self.tab_widget.addTab(self.tab_ElegirDirigente,
                               "Asignar Dirigente a Curso")
        self.contenedorNuevo = QVBoxLayout()
        #botones
        self.btnCrear = QPushButton("Crear")
        self.connect(self.btnCrear, SIGNAL("clicked()"), self.accionCrear)
        self.btnActualizar = QPushButton("Guardar")
        self.connect(self.btnActualizar, SIGNAL("clicked()"),
                     self.accionGuardar)
        self.btnCancelar = QPushButton("Cancelar")
        self.connect(self.btnCancelar, SIGNAL("clicked()"),
                     self.accionCancelar)
        #layaouts
        self.Cursos = MyTable(self)
        self.contenedor.addWidget(QLabel("Cursos"))
        self.contenedor.addWidget(self.Cursos)

        self.botonCurso = QPushButton("Mostrar Informacion del Curso")
        self.connect(self.botonCurso, SIGNAL("clicked()"),
                     self.obtenerInfoCurso)
        self.contenedor.addWidget(self.botonCurso)

        self.contenedor.addWidget(self.tab_widget)

        self.layoutCurso1 = QFormLayout()
        self.layoutCurso2 = QHBoxLayout()
        self.layoutNuevo.addLayout(self.layoutCurso1)
        self.layoutNuevo.addLayout(self.layoutCurso2)

        #definicion cajas de texto
        self.aLectivo = QLineEdit()
        self.curso = QComboBox()
        self.paralelo = QLineEdit()
        self.listaCurso = [
            "Kinder", "Primero", "Segundo", "Tercero", "Cuarto", "Quinto",
            "Sexto", "Septimo"
        ]
        self.curso.addItems(self.listaCurso)
        #creacion de formulario
        self.layoutCurso1.addRow("Ano Lectivo: ", self.aLectivo)
        self.layoutCurso1.addRow("curso: ", self.curso)
        self.layoutCurso1.addRow("Paralelo: ", self.paralelo)
        self.layoutCurso2.addWidget(self.btnCrear)
        self.layoutCurso2.addWidget(self.btnActualizar)
        self.layoutCurso2.addWidget(self.btnCancelar)

        #agrego datos a la tabla
        self.manejador = ManejadorBD()
        self.HeadersCurso = [
            u"Código", u"Número", u"Año Lectivo", "Paralelo",
            u"Cédula Dirigente"
        ]
        self.Cursos.setHeader(self.HeadersCurso)
        self.Cursos.addTable(self.manejador.obtenerCursos())
        self.Cursos.setEditable(False)

        self.btnLigar = QPushButton("Ligar")
        self.connect(self.btnLigar, SIGNAL("clicked()"), self.ligar)
        self.btnDesLigar = QPushButton("DesLigar")
        self.connect(self.btnDesLigar, SIGNAL("clicked()"), self.desligar)
        self.layoutProfesorMateria = QHBoxLayout()
        self.materiasConProfesor = [
        ]  #almacenara las tuplas Materia,Profesor que se debera cargar en la base de datos

        self.layoutProfesorMateria1 = QVBoxLayout()
        self.layoutProfesorMateria2 = QVBoxLayout()
        self.layoutProfesorMateria3 = QVBoxLayout()
        self.layoutProfesorMateria4 = QVBoxLayout()

        self.MateriasSinProfesor = MyTable(self.tab_widget)
        self.MateriasSinProfesor.setHeader(["Codigo", "Nombre"])
        self.MateriasProfesor = MyTable(self.tab_widget)
        self.MateriasProfesor.setHeader([
            "", "Materia Asignada", "", "Nombres del Profesor",
            "Apellidos del Profesor"
        ])
        self.MateriasProfesor.hideColumn(0)
        self.MateriasProfesor.hideColumn(2)

        self.Profesores = MyTable(self.tab_widget)
        self.Profesores.setHeader([u"Cédula", "Nombre", "Apellido"])
        self.Profesores.addTable(self.manejador.consultarProfesores())
        self.Profesores.setEditable(False)

        self.layoutProfesorMateria1.addWidget(QLabel("Materias sin Profesor"))
        self.layoutProfesorMateria1.addWidget(self.MateriasSinProfesor)
        self.layoutProfesorMateria2.addWidget(QLabel("Profesores"))
        self.layoutProfesorMateria2.addWidget(self.Profesores)
        self.layoutProfesorMateria3.addWidget(self.btnLigar)
        self.layoutProfesorMateria3.addWidget(self.btnDesLigar)
        self.layoutProfesorMateria4.addWidget(QLabel("Materia Profesor"))
        self.layoutProfesorMateria4.addWidget(self.MateriasProfesor)

        self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria1)
        self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria2)
        self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria3)
        self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria4)
        self.tab_ProfesorMateria.setLayout(self.layoutProfesorMateria)
        self.modoConsulta()
        self.paralelo.setEnabled(False)
        self.layoutDirigente = QHBoxLayout()
        self.ProfesoresDirigentes = MyTable(self.tab_widget)
        self.ProfesoresDirigentes.setHeader([u"Cédula", "Nombre", "Apellido"])
        self.ProfesoresDirigentes.addTable(
            self.manejador.consultarProfesores())
        self.btnAsignarDirigente = QPushButton("Asignar Dirigente")
        self.layoutDirigente.addWidget(self.ProfesoresDirigentes)
        self.layoutDirigente.addWidget(self.btnAsignarDirigente)
        self.tab_ElegirDirigente.setLayout(self.layoutDirigente)
        self.connect(self.btnAsignarDirigente, SIGNAL("clicked()"),
                     self.ligarDirigente)

    def obtenerInfoCurso(self):
        self.modoConsulta()
        self.idCurso = 0
        cursos = self.Cursos.getSelectedRegister()
        if len(cursos) > 0:
            cursoSeleccionado = cursos[len(cursos) -
                                       1]  #el primer registro seleccionado
            self.idCurso = cursoSeleccionado[
                0]  #el primer atributo es el id, almacena la referencia del idCurso actual
            self.obtenerMateriasSinProfesor(self.idCurso)
            self.actualizarMateriasProfesor(self.idCurso)
            #llenamos la consulta
            self.aLectivo.setText(cursoSeleccionado[2])
            i = self.listaCurso.index(cursoSeleccionado[1])
            self.curso.setCurrentIndex(i)
            self.paralelo.setText(cursoSeleccionado[3])

    def obtenerMateriasSinProfesor(
        self, idCurso
    ):  #actualiza el grid con la informacion de las materias sin profesor
        materiasDelCurso = self.manejador.obtenerMateriasPorCurso(
            idCurso)  #obtiene las materias sin profesor del curso
        self.MateriasSinProfesor.row = 0
        self.MateriasSinProfesor.deleteData()
        self.MateriasSinProfesor.addTable(
            materiasDelCurso)  #agrega las materias sin profesor
        self.MateriasSinProfesor.hideColumn(0)
        self.MateriasSinProfesor.setEditable(False)

    def actualizarMateriasProfesor(
        self, idCurso
    ):  #actualiza el grid con la informacion de las materias y sus profesores asignados
        resultados = self.manejador.obtenerMateriaCursoProfesor(idCurso)
        self.MateriasProfesor.deleteData(
        )  #Si existe informacion dentro del grid la borra para cargar nueva informacion
        self.MateriasProfesor.addTable(resultados)
        self.MateriasProfesor.setEditable(False)
        self.MateriasProfesor.hideColumn(0)
        self.MateriasProfesor.hideColumn(2)

    def ligar(self):
        try:
            #obtiene la materia seleccionada
            materiasSeleccionadas = self.MateriasSinProfesor.getSelectedRegister(
            )
            if len(materiasSeleccionadas) > 0:
                materia = materiasSeleccionadas[
                    0]  #el primer registro seleccionado
                idMateria = materia[0]
            #obtiene el profesor seleccionado
            profesoresSeleccionados = self.Profesores.getSelectedRegister(
            )  #el primer registro seleccionado
            if len(profesoresSeleccionados) > 0:
                profesor = profesoresSeleccionados[0]
                idProfesor = profesor[0]

            #agrega la informacion a la base de datos
            self.manejador.agregarProfesorAMateriaDeCurso(
                self.idCurso, idMateria, idProfesor)
            #actualizar la informacion de la gui
            self.actualizarMateriasProfesor(self.idCurso)
            self.obtenerMateriasSinProfesor(self.idCurso)
            QMessageBox.about(
                self, u'Actualización',
                'Se ha asignado esta materia al profesor correctamente')
        except:
            QMessageBox.about(
                self, 'Error!',
                u'No se ha podido registrar esta materia al profesor')

    def desligar(self):
        try:
            lista = self.MateriasProfesor.getSelectedRegister()
            if len(lista) > 0:
                fila = lista[0]
                #obtengo la informacion de la tupla que fue seleccioanda
                idMateriaSeleccionada = str(fila[0])
                cedulaProfesorSeleccionado = str(fila[2])
                #actualizar la base
                self.manejador.quitarProfesorDeMateria(
                    self.idCurso, idMateriaSeleccionada,
                    cedulaProfesorSeleccionado)
                #actualizar las materias sin profesor
                self.actualizarMateriasProfesor(self.idCurso)
                self.obtenerMateriasSinProfesor(self.idCurso)
                QMessageBox.about(
                    self, u'Actualización',
                    'Se ha desvinculado al profesor de esta materia')
        except:
            QMessageBox.about(
                self, 'Error!',
                u'No se ha podido desvincular al profesor de esta materia')

    def actualizarMaterias(self):
        filasSeleccionadas = self.MateriasSinProfesor.getIndexSelected(
        )  #obtiene curso seleccionado
        registro = filasSeleccionadas[0]
        indice = registro.row(
        )  #obtiene el indice del registro dentro del grid
        self.MateriasSinProfesor.deleteRow(
            indice
        )  #borra la fila de la materia a la cual ya se le asigno un profesor
        self.MateriasSinProfesor.setEditable(False)

    def modoCrear(self):
        self.btnCrear.setEnabled(False)
        self.btnActualizar.setEnabled(True)
        self.btnCancelar.setEnabled(True)
        self.aLectivo.setEnabled(True)
        self.curso.setEnabled(True)
        self.paralelo.setEnabled(False)

    def modoConsulta(self):
        self.aLectivo.setText("")
        self.paralelo.setText("")
        self.btnCrear.setEnabled(True)
        self.btnActualizar.setEnabled(False)
        self.btnCancelar.setEnabled(False)
        self.aLectivo.setEnabled(False)
        self.curso.setEnabled(False)
        self.paralelo.setEnabled(False)

    def accionCrear(self):
        self.aLectivo.setText("")
        self.paralelo.setText("")
        self.modoCrear()

    def accionGuardar(self):
        datos = (self.curso.currentIndex() + 1, self.aLectivo.displayText())
        try:
            if (self.validarAnoLectivo(self.aLectivo.displayText())):
                self.manejador.crearCurso(datos)
                QMessageBox.about(self, 'Aviso!',
                                  u'Se ha creado el Curso Correctamente')
                self.modoConsulta()
                self.actualizarCursos()
            else:
                QMessageBox.about(self, 'Error!', u'Año lectivo invalido')
        except:
            QMessageBox.about(self, 'Error!',
                              u'No se ha podido Crear el Curso')

    def accionCancelar(self):
        self.aLectivo.setText("")
        self.paralelo.setText("")
        self.modoConsulta()

    def actualizarCursos(self):
        self.Cursos.deleteData()
        self.Cursos.addTable(self.manejador.obtenerCursos())

    def validarAnoLectivo(self, a):
        anos = a.split('-')
        if (len(anos) != 2):
            return False
        else:
            try:
                ano1 = int(anos[0])
                ano2 = int(anos[1])
                if ((ano2 - ano1) == 1):
                    return True
                else:
                    return False
            except Exception, e:
                return False
Пример #26
0
    def __init__(self, *args):
        QWidget.__init__(self, *args)
        self.setGeometry(100, 50, self.dimension_x, self.dimension_y)
        self.contenedor = QVBoxLayout(
        )  #layout principal de esta gui, los widgets se agregan de forma horizontal
        self.setLayout(self.contenedor)
        #combobox tipo busqueda
        self.tipoBusqueda = ["Matricula", "Cedula", "Nombre", "Apellido"]
        self.comboBusquedaAlumno = QComboBox(
        )  #tipos de usuario mostrados en un combo box
        self.comboBusquedaAlumno.addItems(self.tipoBusqueda)
        #Tabla alumnos
        self.alumnos = MyTable(self)
        #Tabla factura
        self.factura = MyTable(self)
        #cajas de texto
        self.estudiante = QLineEdit()
        #boton
        self.btnGenerar = QPushButton("Generar Factura")
        self.btnSeleccionar = QPushButton("Seleccionar")
        self.btnCancelar = QPushButton("Cancelar")
        self.btnAgregar = QPushButton("Agregar Mes")
        #etiquetas
        self.lblNumeroFactura = QLabel("Factura:     ")
        #valores de la factura
        self.lblSubTotal = QLabel("SubTota = $ 0.00   ")
        self.lblIva = QLabel("IVA 12% = $ 0.00   ")
        self.lblTotal = QLabel("Total = $ 0.00   ")
        self.GBoxValores = QGroupBox("valores")
        vGBoxValores = QVBoxLayout()
        self.GBoxValores.setLayout(vGBoxValores)
        vGBoxValores.addWidget(self.lblSubTotal)
        vGBoxValores.addWidget(self.lblIva)
        vGBoxValores.addWidget(self.lblTotal)
        #contruccion ventana

        self.layoutEstudiantes = QVBoxLayout()
        self.layoutEstudiantes1 = QHBoxLayout()
        self.layoutEstudiantes2 = QHBoxLayout()
        self.layoutEstudiantes21 = QVBoxLayout()
        self.layoutEstudiantes.addLayout(self.layoutEstudiantes1)
        self.layoutEstudiantes.addLayout(self.layoutEstudiantes2)
        self.layoutEstudiantes1.addWidget(
            QLabel("                               "))
        self.layoutEstudiantes1.addWidget(QLabel("Tipo Busqueda"))
        self.layoutEstudiantes1.addWidget(self.comboBusquedaAlumno)
        self.layoutEstudiantes1.addWidget(self.estudiante)
        self.layoutEstudiantes1.addWidget(
            QLabel("                               "))
        self.layoutEstudiantes2.addWidget(self.alumnos)
        self.layoutEstudiantes2.addLayout(self.layoutEstudiantes21)
        self.layoutEstudiantes21.addWidget(self.btnSeleccionar)
        self.layoutEstudiantes21.addWidget(self.btnAgregar)
        self.layoutEstudiantes21.addWidget(self.btnCancelar)

        self.layoutFactura = QVBoxLayout()
        self.layoutFactura1 = QHBoxLayout()
        self.layoutFactura2 = QHBoxLayout()
        self.layoutFactura.addLayout(self.layoutFactura1)
        self.layoutFactura.addLayout(self.layoutFactura2)
        self.layoutFactura2.addWidget(self.factura)
        self.layoutFactura2.addWidget(self.GBoxValores)
        self.layoutFactura2.addWidget(self.btnGenerar)
        self.layoutFactura1.addWidget(self.lblNumeroFactura)

        self.contenedor.addLayout(self.layoutEstudiantes)
        self.contenedor.addLayout(self.layoutFactura)

        self.headerEstudainte = [
            u"Matrícula", u"cédula", "Nombres", "Apellidos"
        ]
        self.manejadorBD = ManejadorBD()
        #agrego la tabla de alumnos
        self.alumnos.setHeader(self.headerEstudainte)
        self.alumnos.addTable(self.manejadorBD.consultarEstudiante2())
        self.estudiante.textChanged.connect(
            self.alumnos.on_lineEdit_textChanged)
        self.comboBusquedaAlumno.currentIndexChanged.connect(
            self.alumnos.on_comboBox_currentIndexChanged)
        self.headerFactura = [
            "Cantidad", "Descripcion", "P. Unitario", "V. Total"
        ]
        self.factura.setHeader(self.headerFactura)
        self.connect(self.btnSeleccionar, SIGNAL("clicked()"),
                     self.AccionSeleccionar)
        self.connect(self.btnAgregar, SIGNAL("clicked()"),
                     self.agregarElemntoFactura)
        self.connect(self.btnCancelar, SIGNAL("clicked()"),
                     self.AccionCancelar)
        self.connect(self.btnGenerar, SIGNAL("clicked()"), self.genrarFactura)
        self.modoSeleccion()
        self.deudas = []
        self.idDeudas = []
        self.total = 0.0
        self.subTotal = 0.0
        self.iva = 0.0
        self.gReporte = GeneradorReporte()
        self.personaFactura = ()
	def __init__(self,*args):
			QWidget.__init__(self,*args)
			self.setGeometry(100,50,self.dimension_x,self.dimension_y)
			self.contenedor = QVBoxLayout() #layout principal de esta gui, los widgets se agregan de forma horizontal
			self.setLayout(self.contenedor)
			#combobox tipo busqueda
			self.tipoBusqueda=["Matricula","Cedula","Nombre","Apellido"]
			self.comboBusquedaAlumno=QComboBox() #tipos de usuario mostrados en un combo box
			self.comboBusquedaAlumno.addItems(self.tipoBusqueda)
			#Tabla alumnos
			self.alumnos=MyTable(self)
			#Tabla factura
			self.factura=MyTable(self)
			#cajas de texto
			self.estudiante=QLineEdit()
			#boton
			self.btnGenerar=QPushButton("Generar Factura")
			self.btnSeleccionar=QPushButton("Seleccionar")
			self.btnCancelar=QPushButton("Cancelar")
			self.btnAgregar=QPushButton("Agregar Mes")
			#etiquetas
			self.lblNumeroFactura=QLabel("Factura:     ")
			#valores de la factura
			self.lblSubTotal=QLabel("SubTota = $ 0.00   ")
			self.lblIva=QLabel("IVA 12% = $ 0.00   ")
			self.lblTotal=QLabel("Total = $ 0.00   ")
			self.GBoxValores = QGroupBox ( "valores" )
			vGBoxValores = QVBoxLayout()
			self.GBoxValores.setLayout(vGBoxValores)
			vGBoxValores.addWidget(self.lblSubTotal)
			vGBoxValores.addWidget(self.lblIva)
			vGBoxValores.addWidget(self.lblTotal)
			#contruccion ventana
			
			self.layoutEstudiantes=QVBoxLayout()
			self.layoutEstudiantes1=QHBoxLayout()
			self.layoutEstudiantes2=QHBoxLayout()
			self.layoutEstudiantes21=QVBoxLayout()
			self.layoutEstudiantes.addLayout(self.layoutEstudiantes1)
			self.layoutEstudiantes.addLayout(self.layoutEstudiantes2)
			self.layoutEstudiantes1.addWidget(QLabel("                               "))
			self.layoutEstudiantes1.addWidget(QLabel("Tipo Busqueda"))
			self.layoutEstudiantes1.addWidget(self.comboBusquedaAlumno)
			self.layoutEstudiantes1.addWidget(self.estudiante)
			self.layoutEstudiantes1.addWidget(QLabel("                               "))
			self.layoutEstudiantes2.addWidget(self.alumnos)
			self.layoutEstudiantes2.addLayout(self.layoutEstudiantes21)
			self.layoutEstudiantes21.addWidget(self.btnSeleccionar)
			self.layoutEstudiantes21.addWidget(self.btnAgregar)
			self.layoutEstudiantes21.addWidget(self.btnCancelar)

	
			self.layoutFactura=QVBoxLayout()
			self.layoutFactura1=QHBoxLayout()
			self.layoutFactura2=QHBoxLayout()
			self.layoutFactura.addLayout(self.layoutFactura1)
			self.layoutFactura.addLayout(self.layoutFactura2)
			self.layoutFactura2.addWidget(self.factura)
			self.layoutFactura2.addWidget(self.GBoxValores)
			self.layoutFactura2.addWidget(self.btnGenerar)
			self.layoutFactura1.addWidget(self.lblNumeroFactura)
			

			self.contenedor.addLayout(self.layoutEstudiantes)
			self.contenedor.addLayout(self.layoutFactura)

			self.headerEstudainte = [u"Matrícula",u"cédula", "Nombres", "Apellidos"]
			self.manejadorBD = ManejadorBD() 
			#agrego la tabla de alumnos
			self.alumnos.setHeader(self.headerEstudainte)
			self.alumnos.addTable(self.manejadorBD.consultarEstudiante2())
			self.estudiante.textChanged.connect(self.alumnos.on_lineEdit_textChanged)
			self.comboBusquedaAlumno.currentIndexChanged.connect(self.alumnos.on_comboBox_currentIndexChanged)
			self.headerFactura=["Cantidad","Descripcion","P. Unitario","V. Total"]
			self.factura.setHeader(self.headerFactura)
			self.connect(self.btnSeleccionar,SIGNAL("clicked()"),self.AccionSeleccionar)
			self.connect(self.btnAgregar,SIGNAL("clicked()"),self.agregarElemntoFactura)
			self.connect(self.btnCancelar,SIGNAL("clicked()"),self.AccionCancelar)
			self.connect(self.btnGenerar,SIGNAL("clicked()"),self.genrarFactura)
			self.modoSeleccion()
			self.deudas=[]
			self.idDeudas=[]
			self.total=0.0
			self.subTotal=0.0
			self.iva=0.0
			self.gReporte=GeneradorReporte()
			self.personaFactura=()
	def __init__(self,*args):
			QWidget.__init__(self,*args)
			self.setGeometry(100,50,self.dimension_x,self.dimension_y)
			self.contenedor = QVBoxLayout() #layout principal de esta gui, los widgets se agregan de forma vertical
			self.setLayout(self.contenedor)

			#componentes que iran en la ventana
			

			self.tipoBusqueda=[u"Cédula","Nombres","Apellidos"]
			self.paramBusqueda = QLineEdit() #entrada de texto usada para ingresar el parametro de busqueda seccion Consultas
			self.btnBuscar = QPushButton() # boton para aceptar la busqueda
			self.btnBuscar.setIcon(QIcon("Imagenes/buscar.jpg"))
			self.comboBusquedaProfesor=QComboBox() #tipos de usuario mostrados en un combo box
			self.comboBusquedaProfesor.addItems(self.tipoBusqueda)
			
			#COMPONENTES DE LA VENTANA CONSULTAS
			self.labelsProfesor = [QLabel(""),QLabel(""),QLabel(""),QLabel(""),QLabel(""),QLabel("")]
			
			#elementos de la pestaña de EDICION
			
			# expresion regular`para validar nombres
			self.regex = QRegExp(u"^[À-Ÿà-ÿA-Za-z\\s*\\u'\xf1'*]+$")
			self.validator = QRegExpValidator(self.regex)

			#expresiones regulares para la cedula
			self.regexN = QRegExp("[0-9]*")
			self.validatorN = QRegExpValidator(self.regexN)

			self.btnEditar = QPushButton("Editar")
			self.btnEditar.setIcon(QIcon("Imagenes/editar.jpg"))
			self.connect(self.btnEditar,SIGNAL("clicked()"),self.activarEdicion)
			self.btnGuardar = QPushButton("Guardar")
			self.btnGuardar.setIcon(QIcon("Imagenes/guardar.jpg"))
			self.connect(self.btnGuardar,SIGNAL("clicked()"),self.accionGuardarEdicion)
			self.btnCancelar=QPushButton("Cancelar")
			self.connect(self.btnCancelar,SIGNAL("clicked()"),self.accionCancelar)
			#cuadros de texto que permiten editar
			self.editorProfesor = [ QLineEdit(), QLineEdit(), QLineEdit(), QLineEdit(),QLineEdit(), QLineEdit()]
			
			for i in self.editorProfesor:
				i.setReadOnly(True)

			for i in range(1,4):
				self.editorProfesor[i].setValidator(self.validator)

			self.editorProfesor[0].setValidator(self.validatorN)

			
			#ATRIBUTOS DE CREACION
			#lineas de texto para crear al profesor
			self.textCamposProfesor = [ QLineEdit(), QLineEdit(), QLineEdit(), QLineEdit(),QLineEdit()]
			
			#seteo la expresion regular en los QLineEdit
			for i in range(1,4):
				self.textCamposProfesor[i].setValidator(self.validator)

			self.textCamposProfesor[0].setValidator(self.validatorN)


			self.btnCrear = QPushButton("Guardar")
			self.btnCrear.setIcon(QIcon("Imagenes/guardar.jpg"))
			self.connect(self.btnCrear,SIGNAL("clicked()"),self.accionGuardarCreacion)

			self.profesores=MyTable(self)
			#agrego datos a la tabla
			self.headers= [u"Cédula", "Apellidos","Nombres"]
			self.profesores.setHeader(self.headers)
			self.manejador= ManejadorBD()
			self.profesores.addTable(self.manejador.consultarProfesores())
			self.profesores.setEditable(False)
			self.paramBusqueda.textChanged.connect(self.profesores.on_lineEdit_textChanged)
			self.comboBusquedaProfesor.currentIndexChanged.connect(self.profesores.on_comboBox_currentIndexChanged)
			
			# creacion de pestañas
			tab_widget = QTabWidget()
			tab_consultas = QWidget() #se crean dos pestañas
			tab_creacion = QWidget()
			tab_edicionElim = QWidget ()
			
			#agrego las pestañas
			self.cont_consulta = QVBoxLayout(tab_consultas) #layout principal de esta gui, los widgets se agregan de forma horizontal
			self.cont_creacion = QVBoxLayout(tab_creacion)
			self.cont_edicionElim = QVBoxLayout(tab_edicionElim)
			
			tab_widget.addTab(tab_creacion,"Crear")
			tab_widget.addTab(tab_consultas,u"Consultar")
			tab_widget.addTab(tab_edicionElim,u"Edición")

			self.botonObtenerInfo=QPushButton("Obtener Informacion del Profesor")
			self.connect(self.botonObtenerInfo,SIGNAL("clicked()"),self.mostrarInfoProfesor)

			self.llenarTabConsultas()
			self.llenarTabEdicion()
			self.llenarTabCreacion()
			self.primeraFila = QHBoxLayout()
			self.primeraFila.addWidget(self.comboBusquedaProfesor)
			self.primeraFila.addWidget(self.paramBusqueda)
			self.primeraFila.addWidget(self.btnBuscar)
			self.contenedor.addLayout(self.primeraFila)
			self.contenedor.addWidget(self.profesores)
			self.contenedor.addWidget(tab_widget)
			self.modoSeleccion()
	def __init__(self,*args):
			QWidget.__init__(self,*args)
			self.setGeometry(100,50,self.dimension_x,self.dimension_y)
			self.contenedor = QVBoxLayout() #layout principal de esta gui, los widgets se agregan de forma horizontal
			self.setLayout(self.contenedor)
			#creamos las opciones
			self.tab_widget = QTabWidget()
			tab_Nuevo=QWidget()
			self.tab_ElegirDirigente=QWidget()
			self.tab_ProfesorMateria=QWidget()

			self.layoutNuevo=QVBoxLayout()
			self.layoutAgregar=QVBoxLayout()
			tab_Nuevo.setLayout(self.layoutNuevo)
			self.tab_widget.addTab(tab_Nuevo,"Curso")
			self.tab_widget.addTab(self.tab_ProfesorMateria,"Asignar Profesor a Materias")
			self.tab_widget.addTab(self.tab_ElegirDirigente,"Asignar Dirigente a Curso")
			self.contenedorNuevo=QVBoxLayout()
			#botones
			self.btnCrear=QPushButton("Crear")
			self.connect(self.btnCrear,SIGNAL("clicked()"),self.accionCrear)
			self.btnActualizar=QPushButton("Guardar")
			self.connect(self.btnActualizar,SIGNAL("clicked()"),self.accionGuardar)
			self.btnCancelar=QPushButton("Cancelar")
			self.connect(self.btnCancelar,SIGNAL("clicked()"),self.accionCancelar)
			#layaouts
			self.Cursos=MyTable(self)
			self.contenedor.addWidget(QLabel("Cursos"))
			self.contenedor.addWidget(self.Cursos)

			self.botonCurso=QPushButton("Mostrar Informacion del Curso")
			self.connect(self.botonCurso,SIGNAL("clicked()"),self.obtenerInfoCurso)
			self.contenedor.addWidget(self.botonCurso)
			
			self.contenedor.addWidget(self.tab_widget)
			
			self.layoutCurso1=QFormLayout()
			self.layoutCurso2=QHBoxLayout()
			self.layoutNuevo.addLayout(self.layoutCurso1)
			self.layoutNuevo.addLayout(self.layoutCurso2)

			#definicion cajas de texto
			self.aLectivo=QLineEdit()
			self.curso=QComboBox()
			self.paralelo=QLineEdit()
			self.listaCurso=["Kinder","Primero","Segundo","Tercero","Cuarto","Quinto","Sexto","Septimo"]
			self.curso.addItems(self.listaCurso)
			#creacion de formulario
			self.layoutCurso1.addRow("Ano Lectivo: ",self.aLectivo)
			self.layoutCurso1.addRow("curso: ",self.curso)
			self.layoutCurso1.addRow("Paralelo: ",self.paralelo)
			self.layoutCurso2.addWidget(self.btnCrear)
			self.layoutCurso2.addWidget(self.btnActualizar)
			self.layoutCurso2.addWidget(self.btnCancelar)

			#agrego datos a la tabla
			self.manejador = ManejadorBD()
			self.HeadersCurso= [u"Código", u"Número", u"Año Lectivo", "Paralelo",u"Cédula Dirigente"]
			self.Cursos.setHeader(self.HeadersCurso)
			self.Cursos.addTable(self.manejador.obtenerCursos())
			self.Cursos.setEditable(False)

			self.btnLigar=QPushButton("Ligar")
			self.connect(self.btnLigar,SIGNAL("clicked()"),self.ligar)
			self.btnDesLigar=QPushButton("DesLigar")
			self.connect(self.btnDesLigar,SIGNAL("clicked()"),self.desligar)
			self.layoutProfesorMateria=QHBoxLayout()
			self.materiasConProfesor=[]#almacenara las tuplas Materia,Profesor que se debera cargar en la base de datos


			self.layoutProfesorMateria1=QVBoxLayout()
			self.layoutProfesorMateria2=QVBoxLayout()
			self.layoutProfesorMateria3=QVBoxLayout()
			self.layoutProfesorMateria4=QVBoxLayout()

			self.MateriasSinProfesor=MyTable(self.tab_widget)
			self.MateriasSinProfesor.setHeader(["Codigo","Nombre"])
			self.MateriasProfesor=MyTable(self.tab_widget)
			self.MateriasProfesor.setHeader(["","Materia Asignada","","Nombres del Profesor","Apellidos del Profesor"])
			self.MateriasProfesor.hideColumn(0)
			self.MateriasProfesor.hideColumn(2)

			self.Profesores=MyTable(self.tab_widget)
			self.Profesores.setHeader([u"Cédula","Nombre","Apellido"])
			self.Profesores.addTable(self.manejador.consultarProfesores())	
			self.Profesores.setEditable(False)		

			self.layoutProfesorMateria1.addWidget(QLabel("Materias sin Profesor"))
			self.layoutProfesorMateria1.addWidget(self.MateriasSinProfesor)
			self.layoutProfesorMateria2.addWidget(QLabel("Profesores"))
			self.layoutProfesorMateria2.addWidget(self.Profesores)
			self.layoutProfesorMateria3.addWidget(self.btnLigar)
			self.layoutProfesorMateria3.addWidget(self.btnDesLigar)
			self.layoutProfesorMateria4.addWidget(QLabel("Materia Profesor"))
			self.layoutProfesorMateria4.addWidget(self.MateriasProfesor)

			self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria1)
			self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria2)
			self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria3)
			self.layoutProfesorMateria.addLayout(self.layoutProfesorMateria4)
			self.tab_ProfesorMateria.setLayout(self.layoutProfesorMateria)
			self.modoConsulta()
			self.paralelo.setEnabled(False)
			self.layoutDirigente=QHBoxLayout()
			self.ProfesoresDirigentes=MyTable(self.tab_widget)
			self.ProfesoresDirigentes.setHeader([u"Cédula","Nombre","Apellido"])
			self.ProfesoresDirigentes.addTable(self.manejador.consultarProfesores())
			self.btnAsignarDirigente=QPushButton("Asignar Dirigente")
			self.layoutDirigente.addWidget(self.ProfesoresDirigentes)
			self.layoutDirigente.addWidget(self.btnAsignarDirigente)
			self.tab_ElegirDirigente.setLayout(self.layoutDirigente)
			self.connect(self.btnAsignarDirigente,SIGNAL("clicked()"),self.ligarDirigente)
	def __init__(self,*args):
			QWidget.__init__(self,*args)
			self.setGeometry(100,50,self.dimension_x,self.dimension_y)
			self.contenedor = QVBoxLayout() #layout principal de esta gui, los widgets se agregan de forma horizontal
			self.setLayout(self.contenedor)
			self.Personas=MyTable(self)
			self.layoutPersona=QFormLayout()
			self.layoutBotones=QHBoxLayout()
			self.layoutBusqueda=QFormLayout()
			#definicion cajas de texto
			self.cedula=QLineEdit()
			self.nombre=QLineEdit()
			self.apellido=QLineEdit()
			self.sexo=QComboBox()
			self.sexo.addItems(["Masculino","Femenino"])
			self.estadoCivil=QComboBox()
			self.lEstadoCivil=["Soltero","Casado","Divorsiado","Union Libre","Viudo"]
			self.estadoCivil.addItems(self.lEstadoCivil)
			self.ocupacion=QLineEdit()
			self.lugarTrabajo=QLineEdit()
			self.telefono=QLineEdit()
			self.direccion=QLineEdit()
			self.calendarioFecha=QCalendarWidget()
			#botones
			self.btnGuardar=QPushButton("Guardar")
			self.btnGuardar.setIcon(QIcon("Imagenes/guardar.jpg"))
			self.btnCancelar=QPushButton("Cancelar")
			self.btnSeleccionar=QPushButton("Seleccionar")
			#definicion objetos busqueda
			self.comboBusqueda=QComboBox()
			self.txtBusqueda=QLineEdit()
			self.comboBusqueda.addItems([u"cédula","Nombres","Apellidos"])

			# llenamos el layout de los botones
			self.layoutBotones.addWidget(self.btnGuardar)
			self.layoutBotones.addWidget(self.btnCancelar)

			#creacion de formulario
			self.layoutPersona.addRow("cedula: ",self.cedula)
			self.cedula.setEnabled(False)
			self.layoutPersona.addRow("Nombre: ",self.nombre)
			self.layoutPersona.addRow("Apellido: ",self.apellido)
			self.layoutPersona.addRow("sexo: ",self.sexo)
			self.layoutPersona.addRow("Fecha Nacimiento",self.calendarioFecha)
			self.layoutPersona.addRow("Estado Civil: ",self.estadoCivil)
			self.layoutPersona.addRow("Ocupacion: ",self.ocupacion)
			self.layoutPersona.addRow("Lugar Trabajo: ",self.lugarTrabajo)
			self.layoutPersona.addRow("Telefono: ",self.telefono)
			self.layoutPersona.addRow("Direccion: ",self.direccion)

			#creacion de layout busqueda
			self.layoutBusqueda.addRow(self.comboBusqueda,self.txtBusqueda)

			#agregamos los layout a la ventana
			self.contenedor.addLayout(self.layoutBusqueda)
			self.contenedor.addWidget(self.Personas)
			self.contenedor.addWidget(self.btnSeleccionar)
			self.contenedor.addLayout(self.layoutPersona)
			self.contenedor.addLayout(self.layoutBotones)

			#tablas
			self.manejador = ManejadorBD()
			self.headers= [u"Cédula", "Nombres", "Apellidos", "Sexo", "Fecha de Nacimiento", "Estado Civil",
			u"Ocupación", "Lugar de Trabajo", u"Teléfono", u"Dirección"]
			self.Personas.setHeader(self.headers)
			self.Personas.addTable(self.manejador.consultarPersonas())

			self.txtBusqueda.textChanged.connect(self.Personas.on_lineEdit_textChanged)
			self.comboBusqueda.currentIndexChanged.connect(self.Personas.on_comboBox_currentIndexChanged)
			self.modoSeleccion()
			self.connect(self.btnSeleccionar,SIGNAL("clicked()"),self.clik_Seleccionar)
			self.connect(self.btnGuardar,SIGNAL("clicked()"),self.clik_Guardar)
			self.connect(self.btnCancelar,SIGNAL("clicked()"),self.clik_Cancelar)
			self.P=[]
Пример #31
0
class VistaProfesorAdm(QWidget):
    dimension_x = 700
    dimension_y = 600

    def __init__(self, *args):
        QWidget.__init__(self, *args)
        self.setGeometry(100, 50, self.dimension_x, self.dimension_y)
        self.contenedor = QVBoxLayout(
        )  #layout principal de esta gui, los widgets se agregan de forma vertical
        self.setLayout(self.contenedor)

        #componentes que iran en la ventana

        self.tipoBusqueda = [u"Cédula", "Nombres", "Apellidos"]
        self.paramBusqueda = QLineEdit(
        )  #entrada de texto usada para ingresar el parametro de busqueda seccion Consultas
        self.btnBuscar = QPushButton()  # boton para aceptar la busqueda
        self.btnBuscar.setIcon(QIcon("Imagenes/buscar.jpg"))
        self.comboBusquedaProfesor = QComboBox(
        )  #tipos de usuario mostrados en un combo box
        self.comboBusquedaProfesor.addItems(self.tipoBusqueda)

        #COMPONENTES DE LA VENTANA CONSULTAS
        self.labelsProfesor = [
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel(""),
            QLabel("")
        ]

        #elementos de la pestaña de EDICION

        # expresion regular`para validar nombres
        self.regex = QRegExp(u"^[À-Ÿà-ÿA-Za-z\\s*\\u'\xf1'*]+$")
        self.validator = QRegExpValidator(self.regex)

        #expresiones regulares para la cedula
        self.regexN = QRegExp("[0-9]*")
        self.validatorN = QRegExpValidator(self.regexN)

        self.btnEditar = QPushButton("Editar")
        self.btnEditar.setIcon(QIcon("Imagenes/editar.jpg"))
        self.connect(self.btnEditar, SIGNAL("clicked()"), self.activarEdicion)
        self.btnGuardar = QPushButton("Guardar")
        self.btnGuardar.setIcon(QIcon("Imagenes/guardar.jpg"))
        self.connect(self.btnGuardar, SIGNAL("clicked()"),
                     self.accionGuardarEdicion)
        self.btnCancelar = QPushButton("Cancelar")
        self.connect(self.btnCancelar, SIGNAL("clicked()"),
                     self.accionCancelar)
        #cuadros de texto que permiten editar
        self.editorProfesor = [
            QLineEdit(),
            QLineEdit(),
            QLineEdit(),
            QLineEdit(),
            QLineEdit(),
            QLineEdit()
        ]

        for i in self.editorProfesor:
            i.setReadOnly(True)

        for i in range(1, 4):
            self.editorProfesor[i].setValidator(self.validator)

        self.editorProfesor[0].setValidator(self.validatorN)

        #ATRIBUTOS DE CREACION
        #lineas de texto para crear al profesor
        self.textCamposProfesor = [
            QLineEdit(),
            QLineEdit(),
            QLineEdit(),
            QLineEdit(),
            QLineEdit()
        ]

        #seteo la expresion regular en los QLineEdit
        for i in range(1, 4):
            self.textCamposProfesor[i].setValidator(self.validator)

        self.textCamposProfesor[0].setValidator(self.validatorN)

        self.btnCrear = QPushButton("Guardar")
        self.btnCrear.setIcon(QIcon("Imagenes/guardar.jpg"))
        self.connect(self.btnCrear, SIGNAL("clicked()"),
                     self.accionGuardarCreacion)

        self.profesores = MyTable(self)
        #agrego datos a la tabla
        self.headers = [u"Cédula", "Apellidos", "Nombres"]
        self.profesores.setHeader(self.headers)
        self.manejador = ManejadorBD()
        self.profesores.addTable(self.manejador.consultarProfesores())
        self.profesores.setEditable(False)
        self.paramBusqueda.textChanged.connect(
            self.profesores.on_lineEdit_textChanged)
        self.comboBusquedaProfesor.currentIndexChanged.connect(
            self.profesores.on_comboBox_currentIndexChanged)

        # creacion de pestañas
        tab_widget = QTabWidget()
        tab_consultas = QWidget()  #se crean dos pestañas
        tab_creacion = QWidget()
        tab_edicionElim = QWidget()

        #agrego las pestañas
        self.cont_consulta = QVBoxLayout(
            tab_consultas
        )  #layout principal de esta gui, los widgets se agregan de forma horizontal
        self.cont_creacion = QVBoxLayout(tab_creacion)
        self.cont_edicionElim = QVBoxLayout(tab_edicionElim)

        tab_widget.addTab(tab_creacion, "Crear")
        tab_widget.addTab(tab_consultas, u"Consultar")
        tab_widget.addTab(tab_edicionElim, u"Edición")

        self.botonObtenerInfo = QPushButton("Obtener Informacion del Profesor")
        self.connect(self.botonObtenerInfo, SIGNAL("clicked()"),
                     self.mostrarInfoProfesor)

        self.llenarTabConsultas()
        self.llenarTabEdicion()
        self.llenarTabCreacion()
        self.primeraFila = QHBoxLayout()
        self.primeraFila.addWidget(self.comboBusquedaProfesor)
        self.primeraFila.addWidget(self.paramBusqueda)
        self.primeraFila.addWidget(self.btnBuscar)
        self.contenedor.addLayout(self.primeraFila)
        self.contenedor.addWidget(self.profesores)
        self.contenedor.addWidget(tab_widget)
        self.modoSeleccion()

    def llenarTabConsultas(self):
        """
		Esta funcion sirve para llenar los elementos de la pestaña consultas
		"""
        contenidoTab = self.cont_consulta

        # aqui estoy creando la primera fila de la pestaña

        primeraFila = QVBoxLayout()
        GBoxProfInfo = QGroupBox("Profesor")
        vboxProfInfo = QFormLayout()
        GBoxProfInfo.setLayout(vboxProfInfo)
        primeraFila.addWidget(self.botonObtenerInfo)
        primeraFila.addWidget(GBoxProfInfo)
        listDatosEProf = [
            u"Cédula:", "Nombres:", "Apellidos:", "Usuario:", "Clave:"
        ]

        for i in range(0, 5):
            vboxProfInfo.addRow(listDatosEProf[i], self.labelsProfesor[i])

        contenidoTab.addLayout(primeraFila)

    def llenarTabCreacion(self):
        contenidoTab = self.cont_creacion
        textoCampos = [
            u"Cédula:", "Nombres:", "Apellidos:", "Usuario:", "Clave:"
        ]
        form_layout = QFormLayout()
        form_layout.addRow("Ingrese correctamente los campos:", QLabel("    "))
        form_layout.addRow(QLabel("    "))

        for i in range(0, 5):
            form_layout.addRow(textoCampos[i], self.textCamposProfesor[i])

        contenidoTab.addLayout(form_layout)

        fila = QHBoxLayout()
        fila.addWidget(self.btnCrear)
        fila.addWidget(QLabel("                         "))
        contenidoTab.addLayout(fila)

    def mostrarInfoProfesor(self):
        profesoresSeleccionados = self.profesores.getSelectedRegister()
        profesor = profesoresSeleccionados[0]  #el primer registro seleccionado
        resultados = self.manejador.obtenerInfoProfesor(profesor[0])
        registro = resultados[0]
        for i in range(len(registro)):
            self.labelsProfesor[i].setText(QString(str(registro[i])))

    def llenarTabEdicion(self):
        """
		Esta funcion sirve para llenar los elementos de la pestaña consultas
		"""
        contenidoTab = self.cont_edicionElim

        # aqui estoy creando la primera fila de la pestaña

        textoCampos = [
            u"Cédula:", "Nombres:", "Apellidos:", "Usuario:", "Clave:"
        ]
        form_layout = QFormLayout()

        for i in range(0, 5):
            form_layout.addRow(textoCampos[i], self.editorProfesor[i])

        contenidoTab.addLayout(form_layout)

        terceraFila = QHBoxLayout()
        terceraFila.addWidget(self.btnEditar)
        terceraFila.addWidget(self.btnGuardar)
        terceraFila.addWidget(self.btnCancelar)
        contenidoTab.addLayout(terceraFila)

    def activarEdicion(self):
        profesoresSeleccionados = self.profesores.getSelectedRegister()
        profesor = profesoresSeleccionados[0]  #el primer registro seleccionado
        resultados = self.manejador.obtenerInfoProfesor(profesor[0])
        registro = resultados[0]
        for i in range(len(registro)):
            if i != 0:
                self.editorProfesor[i].setReadOnly(False)
                self.modoEdicion()
            else:
                self.editorProfesor[i].setEnabled(False)
            self.editorProfesor[i].setText(QString(str(registro[i])))

    def accionGuardarCreacion(self):
        try:
            cedula = self.textCamposProfesor[0].displayText()
            nombre = unicode(self.textCamposProfesor[1].displayText())
            apellido = unicode(self.textCamposProfesor[2].displayText())
            usuario = unicode(self.textCamposProfesor[3].displayText())
            clave = unicode(self.textCamposProfesor[4].displayText())

            if (not (len(cedula) == 10)):
                mensaje = QMessageBox.about(
                    self, 'Error', u'Cédula inválida: debe tener 10 dígitos')
            elif (cedula == "" or nombre == "" or apellido == ""
                  or usuario == "" or clave == ""):
                mensaje = QMessageBox.about(
                    self, 'Error', u'Datos sin llenar: llene todos los datos')
            else:
                tupla = (cedula, nombre, apellido, usuario, clave)
                resultado = self.manejador.existeUsuarioProfesor(usuario)
                if (len(resultado) == 0
                    ):  #el usuario que se desea insertar no existe
                    self.manejador.insertarProfesor(tupla)
                    QMessageBox.about(
                        self, "Aviso",
                        u'Se ha creado un nuevo profesor con éxito')
                else:  #el usuario que se desea insertar si existe
                    mensaje = QMessageBox.about(
                        self, 'Error', u'Usuario ya existente en el Sistema')

                for i in self.textCamposProfesor:
                    i.setText("")

                self.actualizarProfesores()
        except:
            QMessageBox.about(self, 'Error', u'Datos Invalidos')

    def accionGuardarEdicion(self):
        try:
            cedula = self.editorProfesor[0].displayText()
            nombre = self.editorProfesor[1].displayText()
            apellido = self.editorProfesor[2].displayText()
            usuario = self.editorProfesor[3].displayText()
            clave = self.editorProfesor[4].displayText()
            if (not (len(cedula) == 10)):
                QMessageBox.about(self, 'Error',
                                  u'Cédula inválida: debe tener 10 dígitos')
            elif (cedula == "" or nombre == "" or apellido == ""
                  or usuario == "" or clave == ""):
                QMessageBox.about(self, 'Error',
                                  u'Datos sin llenar: llene todos los datos')
            else:
                tupla = (cedula, nombre, apellido, usuario, clave)
                resultados = self.manejador.existeUsuarioRepetido(
                    cedula, usuario)
                if (len(resultados) == 0):
                    self.manejador.editarProfesor(tupla)
                    QMessageBox.about(
                        self, "Aviso",
                        u'Se han guardado los cambios con éxito')
                    self.actualizarProfesores()
                    for i in self.editorProfesor:
                        i.setReadOnly(True)
                        i.setText("")
                else:
                    QMessageBox.about(self, "Error",
                                      u'Usuario ya existente en el sistema')
            self.modoSeleccion()
        except:
            QMessageBox.about(self, 'Error', u'Datos invalidos')

    def actualizarProfesores(self):
        self.profesores.deleteData()
        self.profesores.addTable(self.manejador.consultarProfesores())
        self.profesores.setEditable(False)

    def modoEdicion(self):
        self.btnEditar.setEnabled(False)
        self.btnGuardar.setEnabled(True)
        self.btnCancelar.setEnabled(True)

    def modoSeleccion(self):
        self.btnEditar.setEnabled(True)
        self.btnGuardar.setEnabled(False)
        self.btnCancelar.setEnabled(False)

    def accionCancelar(self):
        self.modoSeleccion()
        for i in self.editorProfesor:
            i.setText("")
            i.setReadOnly(True)