def wheelEvent(self, wheel_event): if wheel_event.modifiers() == Qt.NoModifier: delta = wheel_event.delta() delta = max(min(delta, 480), -480) mouse_before_scale_in_scene = self.mapToScene(wheel_event.pos()) scale_factor = 1 + (0.2 * (delta / 120.0)) scaling = QTransform(scale_factor, 0, 0, scale_factor, 0, 0) self.setTransform(self.transform() * scaling) mouse_after_scale_in_scene = self.mapToScene(wheel_event.pos()) center_in_scene = self.mapToScene(self.frameRect().center()) self.centerOn(center_in_scene + mouse_before_scale_in_scene - mouse_after_scale_in_scene) wheel_event.accept() else: QGraphicsView.wheelEvent(self, wheel_event)