使用 vtkOrientationMarkerWidget 和 QVTKRenderWindowInteractor [PyQt4/PySide]

SAA*_*AAD 4 python pyqt4 vtk pyside qvtkwidget

我使用QVTKRenderWindowInteractor小部件类处理PySide/vtk GUI 。该小部件运行良好,除非我尝试使用以下方法添加方向轴(见图片)vtkOrientationMarkerWidget

axesActor = vtk.vtkAxesActor();
axes = vtk.vtkOrientationMarkerWidget()
axes.SetOrientationMarker(axesActor)
axes.SetInteractor(self.iren)
self.ren.AddActor(axesActor)
axes.EnabledOn() # <== application freeze-crash
axes.InteractiveOn()
Run Code Online (Sandbox Code Playgroud)

已经为 ubuntu 报告了一个类似的错误,表明该错误仅在Qt 示例中重现,而没有 Qt的同一个示例运行良好。

这种行为的任何解决方案? 在此处输入图片说明

小智 6

从 Nicholas R. Rypkema 得到这个答案:

https://nrr.mit.edu/blog/note-about-vtk-pyqt-and-vtkorientationmarkerwidget

长话短说:这将解决您的问题

axesActor = vtk.vtkAxesActor();
self.axes = vtk.vtkOrientationMarkerWidget()
self.axes.SetOrientationMarker(axesActor)
self.axes.SetInteractor(self.iren)
self.ren.AddActor(axesActor)
self.axes.EnabledOn() # <== application freeze-crash
self.axes.InteractiveOn()
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这对我有用!关键是通过使其成为类成员 (self.axes) 来防止轴超出范围。 (2认同)