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()
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()