code: def selection_range(self):
          
          selected = self.selectionModel().selection()
          """:type: QItemSelection """
  
          if selected.isEmpty():
              return -1, -1, -1, -1
  
          min_row = numpy.min([rng.top() for rng in selected])
          max_row = numpy.max([rng.bottom() for rng in selected])
          start = numpy.min([rng.left() for rng in selected])
          end = numpy.max([rng.right() for rng in selected]) + 1
  
          return min_row, max_row, start, end
docs: :rtype: int, int, int, int