我开始使用python中的vtk(6),但在处理KeyPressEvent时遇到了一个问题。我想把vtkInteractorStyleTrackballCamera子类化
如果我使用此模式,我的交互器样式没有getKeySym(),并且我无法解码按下的键
class KeyPressInteractorStyle(vtk.vtkInteractorStyleTrackballCamera):
def __init__(self,parent=None):
self.AddObserver("MiddleButtonPressEvent",self.middleButtonPressEvent)
self.AddObserver("MiddleButtonReleaseEvent",self.middleButtonReleaseEvent)
self.AddObserver("KeyPressEvent",self.keyPress)
def keyPress(self,obj,event):
key = obj.GetKeySym() #Does not work
print("key %s" % key)
return
def middleButtonPressEvent(self,obj,event):
...
return
def middleButtonReleaseEvent(self,obj,event):
...
return
但是,如果我使用工厂vtkInteractorStyleTrackballCamera类并使用此模式添加观察者,则同一个keyPress()可以访问GetKeySym()。在
^{pr2}$我是个新手,我该怎么做才能在我的课堂上获得功能?在
对,我在检查vtk doxygen,并发现vtkInteractorStyleTrackballCamera不是从{a2}继承的,我在移植的example中假定了这一点。我决定将我的样式类传递给父类,以便它可以访问RenderWindow GetKeySym()。这可能不是最好的解决方案,但以下是作为参考:
我在google上搜索“vtk keypressevent python”找到了这个问题,我只想分享我的解决方案,因为不需要子类化
vtkInteractorStyle
:我认为这是一个安全的交互方式。我注意到在你的解决方案中,你把父母vtk.vtkrenderWindowInteractior(). 最好将父级设置为VTKrenderWindowInteractior的特定实例:
相关问题 更多 >
编程相关推荐