python - Windows 上 VTK 中的箭头键事件

标签 python windows keyboard keyboard-events vtk

为什么箭头按键事件没有转发到 Windows 上的 vtkRenderWindowInteractor?有解决方法吗? Windows 和 Mac 上的箭头键事件之间有一般差异吗?

我可以使用以下示例代码重现该问题。在 Mac 操作系统上,如果按箭头键,我会看到“向上”、“向下”、“向左”和“向右”。但在 Windows 上,我没有看到任何内容(未输入回调)。我想知道为什么会这样。

我对 python 2.7 使用 VTK 6.2.0。我在 Windows Server 2012(类似于 Windows 8)和 Windows 7(在虚拟机上)上进行了测试,显示了相同的行为。

# -*- coding: utf-8 -*-
import vtk
import sys

class ClickInteractorStyle(vtk.vtkInteractorStyleTrackballCamera):
    def __init__(self, parent=None):
            self.AddObserver("CharEvent",self.onKeyPressEvent)

    def onKeyPressEvent(self, renderer, event):        
        key = self.GetInteractor().GetKeySym()
        print key
        self.OnChar()

def run():
    sphereSource = vtk.vtkSphereSource()
    sphereSource.SetCenter(0.,0.,0.)
    sphereSource.SetRadius(1.)
    sphereSource.Update()

    sphereMapper = vtk.vtkPolyDataMapper()
    sphereMapper.SetInputConnection(sphereSource.GetOutputPort())

    sphereActor = vtk.vtkActor()
    sphereActor.SetMapper(sphereMapper)

    renderer = vtk.vtkRenderer()
    renderWindow = vtk.vtkRenderWindow()
    renderWindow.AddRenderer(renderer)

    renderWindowInteractor = vtk.vtkRenderWindowInteractor()
    renderWindowInteractor.SetRenderWindow(renderWindow)
    style = ClickInteractorStyle()
    renderWindowInteractor.SetInteractorStyle(style)
    style.SetCurrentRenderer(renderer)

    renderer.AddActor(sphereActor)
    renderWindow.Render()
    renderWindowInteractor.Start()



###############################################################################
# MAIN
###############################################################################
if __name__ == "__main__":
    try:
        run()
    except:
        print "Unexpected error: %s", sys.exc_info()[0]
        raise

最佳答案

这解决了我的问题:替换

self.AddObserver("CharEvent",self.onKeyPressEvent)

self.AddObserver("KeyPressEvent",self.onKeyPressEvent)

关于python - Windows 上 VTK 中的箭头键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33108670/

相关文章:

python - 如何在 div 另一个标签中提取 span 标签

python - NLP 任务中的 token-level 和 segment-level 有什么区别?

python - 我正在尝试从 python 中的 .csv 文件中获取值并面临此错误

ios - 禁用键盘上的键

python - pynput 不发送 ctrl+c 来复制选中的文本

python - 如何从 Kivy 中的一组小部件动态创建纹理?

windows - x86 调试中符号如何解决使用 FPO 遍历堆栈的问题?

windows - SendMessage 或 SendMessageTimout 线程安全吗?

c++ - 无法从 ffmpeg 示例运行 transcode.c

keyboard - FF/Latch 和其他警告