Exemple #1
0
    def __init__(self):
        super(Main, self).__init__()  #constructor
        self.ui = Ui_Grid()           #llamo a componentes graficos
        self.ui.setupUi(self)   

        self.load_data()
        
        self.load_dataEsp()
        self.connect_signals()
        self.show()
Exemple #2
0
class Main(QtGui.QWidget):
    """
    Esta es una grilla
    """
    def __init__(self):
        super(Main, self).__init__()  #constructor
        self.ui = Ui_Grid()           #llamo a componentes graficos
        self.ui.setupUi(self)   

        self.load_data()
        
        self.load_dataEsp()
        self.connect_signals()
        self.show()


        
    def connect_signals(self):
        self.ui.btn_add.clicked.connect(self.add)
        self.ui.btn_delete.clicked.connect(self.delete)
        self.ui.btn_edit.clicked.connect(self.edit)

        self.ui.btn_add_especie.clicked.connect(self.addEsp)
        self.ui.btn_delete_especie.clicked.connect(self.deleteEsp)
        self.ui.btn_edit_especie.clicked.connect(self.editEsp)

    def add(self):
        self.ui.form = FormZoo(self)
        self.ui.form.accepted.connect(self.load_data)
        self.ui.form.show()

    def addEsp(self):
        self.ui.formEsp = FormZoo(self)
        self.ui.formEsp.accepted.connect(self.load_dataEsp)
        self.ui.formEsp.show()

    def load_data(self):
        """
        Función que carga la información de alumnos en la grilla
        """
        zoo = db_model.obtener_zoo()
        #Creamos el modelo asociado a la tabla
        self.data = QtGui.QStandardItemModel(len(zoo), 5)
        self.data.setHorizontalHeaderItem(
            0, QtGui.QStandardItem(u"ID"))
        self.data.setHorizontalHeaderItem(
            1, QtGui.QStandardItem(u"Nombre"))
        self.data.setHorizontalHeaderItem(
            2, QtGui.QStandardItem(u"Ciudad"))
        self.data.setHorizontalHeaderItem(
            3, QtGui.QStandardItem(u"Pais"))
        self.data.setHorizontalHeaderItem(
            4, QtGui.QStandardItem(u"Superficie"))

        for r, row in enumerate(zoo):
            
            index = self.data.index(r, 0, QtCore.QModelIndex())
            self.data.setData(index, row['id'])
            index = self.data.index(r, 1, QtCore.QModelIndex())
            self.data.setData(index, row['name'])
            index = self.data.index(r, 2, QtCore.QModelIndex())
            self.data.setData(index, row['city'])
            index = self.data.index(r, 3, QtCore.QModelIndex())
            self.data.setData(index, row['country'])
            index = self.data.index(r, 4, QtCore.QModelIndex())
            self.data.setData(index, row['area'])

        self.ui.table.setModel(self.data)

        # Para que las columnas 1 y 2 se estire o contraiga cuando
        # se cambia el tamaño de la pantalla
        self.ui.table.horizontalHeader().setResizeMode(
            1, self.ui.table.horizontalHeader().Stretch)
        self.ui.table.horizontalHeader().setResizeMode(
            2, self.ui.table.horizontalHeader().Stretch)

        self.ui.table.setColumnWidth(0,0)
        self.ui.table.setColumnWidth(1, 210)
        self.ui.table.setColumnWidth(2, 210)
        self.ui.table.setColumnWidth(3, 220)
        self.ui.table.setColumnWidth(4, 220)


    def load_dataEsp(self):
        """
        
        """
        esp = db_model.obtener_esp()
        #Creamos el modelo asociado a la tabla
        self.data = QtGui.QStandardItemModel(len(esp), 4)
        self.data.setHorizontalHeaderItem(
            0, QtGui.QStandardItem(u"ID"))
        self.data.setHorizontalHeaderItem(
            1, QtGui.QStandardItem(u"Nombre Comun"))
        self.data.setHorizontalHeaderItem(
            2, QtGui.QStandardItem(u"Nombre Cientifico"))
        self.data.setHorizontalHeaderItem(
            3, QtGui.QStandardItem(u"información"))
       

        for r, row in enumerate(esp):
            
            index = self.data.index(r, 0, QtCore.QModelIndex())
            self.data.setData(index, row['id'])
            index = self.data.index(r, 1, QtCore.QModelIndex())
            self.data.setData(index, row['name_common'])
            index = self.data.index(r, 2, QtCore.QModelIndex())
            self.data.setData(index, row['name_scientific'])
            index = self.data.index(r, 3, QtCore.QModelIndex())
            self.data.setData(index, row['info'])
            

        self.ui.table_2.setModel(self.data)

        # Para que las columnas 1 y 2 se estire o contraiga cuando
        # se cambia el tamaño de la pantalla
        self.ui.table_2.horizontalHeader().setResizeMode(
            1, self.ui.table_2.horizontalHeader().Stretch)
        self.ui.table_2.horizontalHeader().setResizeMode(
            2, self.ui.table_2.horizontalHeader().Stretch)

        self.ui.table_2.setColumnWidth(0,0)
        self.ui.table_2.setColumnWidth(1, 210)
        self.ui.table_2.setColumnWidth(2, 210)
        self.ui.table_2.setColumnWidth(3, 220)
        

    def delete(self):
        """
        Función que intenta borrar un zoo de la base de datos e
        indica el resultado de la operación
        """

        # ANTES DE REALIZAR LA ACCIÓN SE DEBERÍA PREGUNTAR
        # AL USUARIO CONFIRMAR LA OPERACIÓN !!!!!!!!!!!!!!
        data = self.ui.table.model()
        index = self.ui.table.currentIndex()
        if index.row() == -1:  # No se ha seleccionado una fila
            self.errorMessageDialog = QtGui.QErrorMessage(self)
            self.errorMessageDialog.showMessage(u"Debe seleccionar una fila")
            return False
        else:
            id = data.index(index.row(), 0, QtCore.QModelIndex()).data()
            if (db_model.borrar(id)):
                self.load_data()
                msgBox = QtGui.QMessageBox()
                msgBox.setText(u"EL registro fue eliminado.")
                msgBox.exec_()
                return True
            else:
                self.ui.errorMessageDialog = QtGui.QErrorMessage(self)
                self.ui.errorMessageDialog.showMessage(
                    u"Error al eliminar el registro")
                return False

    def deleteEsp(self):
        
        # ANTES DE REALIZAR LA ACCIÓN SE DEBERÍA PREGUNTAR
        # AL USUARIO CONFIRMAR LA OPERACIÓN !!!!!!!!!!!!!!
        data = self.ui.table_2.model()
        index = self.ui.table_2.currentIndex()
        if index.row() == -1:  # No se ha seleccionado una fila
            self.errorMessageDialog = QtGui.QErrorMessage(self)
            self.errorMessageDialog.showMessage(u"Debe seleccionar una fila")
            return False
        else:
            id = data.index(index.row(), 0, QtCore.QModelIndex()).data()
            if (db_model.borrarEsp(id)):
                self.load_dataEsp()
                msgBox = QtGui.QMessageBox()
                msgBox.setText(u"EL registro fue eliminado.")
                msgBox.exec_()
                return True
            else:
                self.ui.errorMessageDialog = QtGui.QErrorMessage(self)
                self.ui.errorMessageDialog.showMessage(
                    u"Error al eliminar el registro")
                return False

    def edit(self):
        """
        Función obtiene el zoo seleccionado en la grilla
        para poner sus datos en el formulario para su edición
        """
        data = self.ui.table.model()
        index = self.ui.table.currentIndex()
        if index.row() == -1:  # No se ha seleccionado una fila
            self.errorMessageDialog = QtGui.QErrorMessage(self)
            self.errorMessageDialog.showMessage(u"Debe seleccionar una fila")
            return False
        else:
            id = data.index(index.row(), 0, QtCore.QModelIndex()).data()
            self.ui.form = FormZoo(self, id)
            self.ui.form.accepted.connect(self.load_data)
            self.ui.form.show()

    def editEsp(self):
        """
        Función obtiene el zoo seleccionado en la grilla
        para poner sus datos en el formulario para su edición
        """
        data = self.ui.table_2.model()
        index = self.ui.table_2.currentIndex()
        if index.row() == -1:  # No se ha seleccionado una fila
            self.errorMessageDialog = QtGui.QErrorMessage(self)
            self.errorMessageDialog.showMessage(u"Debe seleccionar una fila")
            return False
        else:
            id = data.index(index.row(), 0, QtCore.QModelIndex()).data()
            self.ui.formEsp = FormZoo(self, id)
            self.ui.formEsp.accepted.connect(self.load_dataEsp)
            self.ui.formEsp.show()