'Cell content change'

def setData(self, index, value, role=Qt.EditRole):

    if ((not index.isValid()) or self.readonly):
        return False
    i = index.row()
    j = index.column()
    value = from_qvariant(value, str)
    dtype = self._data.dtype.name
    if (dtype == 'bool'):
        try:
            val = bool(float(value))
        except ValueError:
            val = (value.lower() == 'true')
    elif (dtype.startswith('string') or dtype.startswith('bytes')):
        val = to_binary_string(value, 'utf8')
    elif (dtype.startswith('unicode') or dtype.startswith('str')):
        val = to_text_string(value)
    else:
        if (value.lower().startswith('e') or value.lower().endswith('e')):
            return False
        try:
            val = complex(value)
            if (not val.imag):
                val = val.real
        except ValueError as e:
            QMessageBox.critical(self.dialog, 'Error', ('Value    error:    %s' % str(e)))
            return False
    try:
        self.test_array[0] = val
    except OverflowError as e:
        print(type(e.message))
        QMessageBox.critical(self.dialog, 'Error', ('Overflow    error:    %s' % e.message))
        return False
    self.changes[(i, j)] = val
    self.dataChanged.emit(index, index)
    if (not is_string(val)):
        if (val > self.vmax):
            self.vmax = val
        if (val < self.vmin):
            self.vmin = val
    return True
