def __init__(self):
     super(Principal, self).__init__()
     self.ui = Ui_PacientesForm()
     self.ui.setupUi(self)
     self.ui.btn_registrar.clicked.connect(self.registrar)
     self.ui.btn_editar.clicked.connect(self.editar)
     self.ui.btn_eliminar.clicked.connect(self.eliminar)
     self.ui.btn_refrescar.clicked.connect(self.load)
     self.main_layout = QtGui.QVBoxLayout(self)
     self.renderizaTabla()
     self.load()
     self.centrar()
     self.show()
class Principal(QtGui.QWidget):

    def __init__(self):
        super(Principal, self).__init__()
        self.ui = Ui_PacientesForm()
        self.ui.setupUi(self)
        self.ui.btn_registrar.clicked.connect(self.registrar)
        self.ui.btn_editar.clicked.connect(self.editar)
        self.ui.btn_eliminar.clicked.connect(self.eliminar)
        self.ui.btn_refrescar.clicked.connect(self.load)
        self.main_layout = QtGui.QVBoxLayout(self)
        self.renderizaTabla()
        self.load()
        self.centrar()
        self.show()

    def editar(self):
        index = self.ui.tblview_pacientes.currentIndex()  # obtiene la fila
                                                        #seleccionada
        if index.row() == -1:
            mensaje = "Seleccione un Paciente para Editar"
            errorQMessageBox = QtGui.QMessageBox()
            errorQMessageBox.setWindowTitle("Error")
            errorQMessageBox.setText(mensaje)
            errorQMessageBox.exec_()
        else:
            paciente = list()
            model = self.ui.tblview_pacientes.model()
            paciente.append(model.index(index.row(), 0, QtCore.QModelIndex()).data())
            paciente.append(model.index(index.row(), 1, QtCore.QModelIndex()).data())
            paciente.append(model.index(index.row(), 2, QtCore.QModelIndex()).data())
            paciente.append(model.index(index.row(), 3, QtCore.QModelIndex()).data())
        app = RegisPaciente.Principal(paciente)
        app.setWindowTitle("Editar Paciente")
        sys.exit(app.exec_())

    def registrar(self):
        app = RegisPaciente.Principal()
        sys.exit(app.exec_())
        self.load()

    def eliminar(self):
        index = self.ui.tblview_pacientes.currentIndex()  # obtiene la fila
                                                        #seleccionada
        if index.row() == -1:
            mensaje = "Seleccione un Paciente para borrar"
            errorQMessageBox = QtGui.QMessageBox()
            errorQMessageBox.setWindowTitle("Error")
            errorQMessageBox.setText(mensaje)
            errorQMessageBox.exec_()
        else:
            model = self.ui.tblview_pacientes.model()
            rut = model.index(index.row(), 0, QtCore.QModelIndex()).data()
            Controller.eliminarPaciente(rut)

    def centrar(self):
            """Centra la ventana actual."""
            qr = self.frameGeometry()
            cp = QtGui.QDesktopWidget().availableGeometry().center()
            qr.moveCenter(cp)
            self.move(qr.topLeft())

    def renderizaTabla(self):
        self.table = self.ui.tblview_pacientes
        self.table.setFixedWidth(500)
        self.table.setFixedHeight(361)
        self.table.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
        self.table.setAlternatingRowColors(True)
        self.table.setSortingEnabled(True)
        self.main_layout.addWidget(self.table)

    def load(self):
            # metodo para cargar la grilla con los pacientes
            pacientes = Controller.pacientes()
            self.model = QtGui.QStandardItemModel(len(pacientes), 5)
            self.model.setHorizontalHeaderItem(0, QtGui.QStandardItem(u"Rut"))
            self.model.setHorizontalHeaderItem(1, QtGui.QStandardItem
                                              (u"Nombres"))
            self.model.setHorizontalHeaderItem(2, QtGui.QStandardItem
                                              (u"Apellidos"))
            self.model.setHorizontalHeaderItem(3, QtGui.QStandardItem
                                              (u"Ficha Medica"))
            self.model.setHorizontalHeaderItem(4, QtGui.QStandardItem
                                              (u"N Horas Medicas"))
            r = 0
            for row in pacientes:
                fk_rut_paciente = row['rut']
                index = self.model.index(r, 0, QtCore.QModelIndex())
                self.model.setData(index, row['Rut'])
                index = self.model.index(r, 1, QtCore.QModelIndex())
                self.model.setData(index, row['Nombres'])
                index = self.model.index(r, 2, QtCore.QModelIndex())
                self.model.setData(index, row['Apellidos'])
                index = self.model.index(r, 3, QtCore.QModelIndex())
                self.model.setData(index, row['Ficha_Medica'])
                index = self.model.index(r, 4, QtCore.QModelIndex())
                self.model.setData(index, Controller.obtenerNCitas(fk_rut_paciente))
                r = r + 1
            self.table.setModel(self.model)