Thanks,I have add observers on mouse events,and can get event from which view,but dont prohibition of running.some code as this:
for i in range(3):
self.resliceCursorWidget[i].AddObserver(vtk.vtkResliceCursorWidget.ResliceAxesChangedEvent,
self.reslice_axes_changed_callback)
//this can save active view
def interaction_callback(self, obj, event):
click_pos = obj.GetEventPosition()
x, y = click_pos
for renderer in self.renderWindow.GetRenderers():
viewport = renderer.GetViewport()
viewport_x = (x / self.renderWindow.GetSize()[0])
viewport_y = (y / self.renderWindow.GetSize()[1])
if viewport[0] <= viewport_x < viewport[2] and viewport[1] <= viewport_y < viewport[3]:
self.active_widget = renderer
#print(f"renderer: {renderer}")
break
else:
print("no render view")
//this can get active line event,but i dont konw how to stop event
def reslice_axes_changed_callback(self, caller, event):
renderer = caller.GetCurrentRenderer()
#print(f"Reslice Axes Changed!: {renderer}")
if self.active_widget == renderer:
caller.InvokeEvent(event)