MouseEvents
Repository source: MouseEvents
Description¶
This example creates a new vtkInteractorStyle which can be used to implement custom reactions on user events. If you just want to disable single events you can also have a look at MouseEventsObserver. This specific example just prints a simple message and then calls the original eventhandler of the vtkInteractorStyleTrackballCamera.
Other languages
See (Cxx), (PythonicAPI)
Question
If you have a question about this example, please use the VTK Discourse Forum
Code¶
MouseEvents.py
#!/usr/bin/env python
# noinspection PyUnresolvedReferences
import vtkmodules.vtkInteractionStyle
# noinspection PyUnresolvedReferences
import vtkmodules.vtkRenderingOpenGL2
from vtkmodules.vtkCommonColor import vtkNamedColors
from vtkmodules.vtkFiltersSources import vtkSphereSource
from vtkmodules.vtkInteractionStyle import vtkInteractorStyleTrackballCamera
from vtkmodules.vtkRenderingCore import (
vtkActor,
vtkPolyDataMapper,
vtkRenderWindow,
vtkRenderWindowInteractor,
vtkRenderer
)
class MyInteractorStyle(vtkInteractorStyleTrackballCamera):
def __init__(self, parent=None):
self.AddObserver('MiddleButtonPressEvent', self.middle_button_press_event)
self.AddObserver('MiddleButtonReleaseEvent', self.middle_button_release_event)
def middle_button_press_event(self, obj, event):
print('Middle Button pressed')
self.OnMiddleButtonDown()
return
def middle_button_release_event(self, obj, event):
print('Middle Button released')
self.OnMiddleButtonUp()
return
def main():
colors = vtkNamedColors()
source = vtkSphereSource()
source.SetCenter(0, 0, 0)
source.SetRadius(1)
source.Update()
mapper = vtkPolyDataMapper()
mapper.SetInputConnection(source.GetOutputPort())
actor = vtkActor()
actor.SetMapper(mapper)
actor.GetProperty().SetColor(colors.GetColor3d('MistyRose'))
renderer = vtkRenderer()
renderer.SetBackground(colors.GetColor3d('SlateGray'))
renderer.AddActor(actor)
renwin = vtkRenderWindow()
renwin.AddRenderer(renderer)
renwin.SetWindowName('MouseEvents')
interactor = vtkRenderWindowInteractor()
interactor.SetInteractorStyle(MyInteractorStyle())
interactor.SetRenderWindow(renwin)
interactor.Initialize()
renwin.Render()
interactor.Start()
if __name__ == '__main__':
main()