当我在vtk窗口中选择一个框时,可以将哪种vtk.vtkCommand事件作为观察者?]

问题描述 投票:0回答:1
我正在尝试找到一种方法来检测何时结束在vtk窗口中创建一个框。为了进行选择,我首先按键盘上的“ r”,然后用鼠标左键在窗口上打一个框。我试图向MouseInteractorHighLightActor类添加一个Observer,但是找不到正确的vtk.vtkCommand事件来触发我的函数。有人知道我应该使用哪一个吗?

enter image description here

import vtk class MouseInteractorHighLightActor(vtk.vtkInteractorStyleRubberBandPick): def __init__(self, parent=None): self.AddObserver(vtk.vtkCommand.EndPickEvent, self.EndPickEventfunc) self.AddObserver(vtk.vtkCommand.PickEvent, self.PickEvent) self.AddObserver(vtk.vtkCommand.KeyPressEvent, self.KeypressCallbackFunction) return def KeypressCallbackFunction(self, obj, event): print('Key pressed!') def PickEvent(self, obj, event): print('PickEvent!') def EndPickEventfunc(self, obj, event): print('I was here!') clickPos = self.GetInteractor().GetEventPosition() # A renderer and render window renderer = vtk.vtkRenderer() renderer.SetBackground(.3, .4, .5) renwin = vtk.vtkRenderWindow() renwin.AddRenderer(renderer) # An interactor interactor = vtk.vtkRenderWindowInteractor() interactor.SetRenderWindow(renwin) # add the custom style style = MouseInteractorHighLightActor() style.SetDefaultRenderer(renderer) interactor.SetInteractorStyle(style) # Add spheres to play with for i in range(10): source = vtk.vtkSphereSource() source.SetRadius(vtk.vtkMath.Random(.5, 1.0)) source.SetCenter(vtk.vtkMath.Random(-5, 5), vtk.vtkMath.Random(-5, 5), vtk.vtkMath.Random(-5, 5)) source.SetPhiResolution(11) source.SetThetaResolution(21) mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(source.GetOutputPort()) actor = vtk.vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetDiffuseColor(vtk.vtkMath.Random(.4, 1.0), vtk.vtkMath.Random(.4, 1.0), vtk.vtkMath.Random(.4, 1.0)) renderer.AddActor(actor) # Start interactor.Initialize() interactor.Start()

我正在尝试找到一种方法来检测何时结束在vtk窗口中创建一个框。为了进行选择,我首先按键盘上的“ r”,然后用鼠标左键在窗口上打一个框。我...
python events vtk
1个回答
0
投票
vtk.vtkCommand.EndPickEvent上使用vtk.vtkRenderedAreaPicker观察者,并将该区域选择器添加到vtkRenderWindowInteractor
© www.soinside.com 2019 - 2024. All rights reserved.