# How to add observer to handle viewport changing(rotate) event?

**URL:** https://discourse.vtk.org/t/how-to-add-observer-to-handle-viewport-changing-rotate-event/7256
**Category:** Support
**Created:** [November 23, 2021, 11:10am UTC](https://discourse.vtk.org/t/how-to-add-observer-to-handle-viewport-changing-rotate-event/7256 "2021-11-23T11:10:10Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![AlexLuya](https://discourse.vtk.org/user_avatar/discourse.vtk.org/alexluya/32/4036_2.png) [@AlexLuya](https://discourse.vtk.org/u/AlexLuya)
#### Post date: [November 23, 2021, 11:10am UTC](https://discourse.vtk.org/t/how-to-add-observer-to-handle-viewport-changing-rotate-event/7256/1 "2021-11-23T11:10:10Z")

</div>

Hello,I want to recalculate the normal of all actors in the window when view port changing(rotating) by dragging or left key pressing.Below approaches have been tried:

```auto
class Callback:

    def __init__ (self):
          pass

    def __call__ (self, caller, ev):
         print("rotating...")

interactor.AddObserver(vtk.vtkCommand.RotateEvent, Callback())
renwin.AddObserver(vtk.vtkCommand.RotateEvent, Callback())
renderer.GetActiveCamera().AddObserver(vtk.vtkCommand.RotateEvent, Callback())

```

But none of them will print out “rotating”,question is

_Where to register which type of event to handle rotate event?_

Thanks.

---

<div class="post-metadata">

### Author: ![smoothumut](https://discourse.vtk.org/letter_avatar_proxy/v4/letter/s/9e8a1a/32.png) [@smoothumut](https://discourse.vtk.org/u/smoothumut)
#### Post date: [August 10, 2023, 11:34am UTC](https://discourse.vtk.org/t/how-to-add-observer-to-handle-viewport-changing-rotate-event/7256/2 "2023-08-10T11:34:59Z")

</div>

I have the same problem, somehow OnRotate function is not triggered

### here is my custom interactorStyle

class NoRotateStyle(vtk.vtkInteractorStyleTrackballCamera):

```
def __init__ (self):
    self.AddObserver("RotateEvent",self.onRotateEvent)
    self.AddObserver("LeftButtonPressEvent", self.onLeftButtonDown)
    # self.AddObserver("LeftButtonReleaseEvent", self.onLeftButtonUp)
    # self.AddObserver("InteractionEvent",self.onInteract)
    # self.AddObserver("RightButtonPressEvent", self.onRightButtonDown)
    pass

def onLeftButtonDown(self, obj, event) -> None:
    print("left clicked down custom interactor",obj)
    self.OnLeftButtonDown()
    return 

def onRotateEvent(self, obj,event) -> None:
    print("rotating")
    self.OnRotate()
    return

def OnRotate(self) -> None:
    print("rotating")
    return super().OnRotate()

def OnPan(self) -> None:
    print("panning")
    return super().OnPan()

```

OnPan, OnRotate methods which are original methods are not triggered.  
Also if I addobserver for rotate or pan, the custome method “onRotateEvent” method is also not triggered  
Am I missing something or is there a bug??  
Thanks in advance  
Best Regards
