首页 > 解决方案 > 如何在 Python-VTK 中禁用 VTK 的热键

问题描述

我想在 Python 版本中禁用一些 VTK 热键。虽然这里有 C++(也许还有 js)的答案,但它似乎不适用于 Python 版本。

我尝试在我的 InterfactionStyle 或 QVTKRenderWindowInteractor 上重载 OnKeyPress,但它不起作用。例如,我想禁用键“w”和“s”上的线框/曲面视图开关。

标签: pythonvtkqvtkwidget

解决方案


它在vtkInteractorStyle::OnChar中定义。所以尝试重载这个方法,像这样:

class MyInteractorStyle(vtk.vtkInteractorStyleTrackballCamera):                                                                                                                                                                                                                             
  def __init__(self, parent = None):                                                                                                                                                                                                                                                        
    self.AddObserver('CharEvent', self.OnChar)                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                            
  def OnChar(self, obj, event):                                                                                                                                                                                                                                                             
      if obj.GetInteractor().GetKeyCode() == "w":                                                                                                                                                                                                                                           
          return                                                                                                                                                                                                                                                                            
      super(MyInteractorStyle, obj).OnChar() 

推荐阅读