def mouseReleaseEvent(self, event: QGraphicsSceneMouseEvent):
     x1 = event.buttonDownPos(Qt.LeftButton).x()
     x2 = event.pos().x()
     if x1 > x2:
         x2, x1 = x1, x2
     x1, x2 = self._values_from_pixels(np.array([x1, x2]))
     self.selection_changed.emit(x1, x2, self._attr_name)
     event.accept()
 def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent):
     if event.buttons() & Qt.LeftButton:
         rect = QRectF(event.buttonDownPos(Qt.LeftButton),
                       event.pos()).normalized()
         self.__selection_rect.setRect(rect)
         self.__selection_rect.setVisible(True)
         if rect.width():
             self.select(None)
         event.accept()
 def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent):
     if event.buttons() & Qt.LeftButton:
         if self._selection_rect is None:
             self._selection_rect = ViolinItem.SelectionRect(
                 self, self._width, self._height)
         x = event.buttonDownPos(Qt.LeftButton).x()
         rect = QRectF(x, 0, event.pos().x() - x, self._height).normalized()
         rect = rect.intersected(self.contentsRect())
         self._selection_rect.setRect(rect)
         event.accept()