VTK——通過回調函數監測鍵盤

python vtk 通過回調函數監測鍵盤”Up”鍵動作,每按一次方向上鍵,actor變換一種顏色

import vtk


class KeyPressInteractorStyle(vtk.vtkInteractorStyleTrackballCamera):

    def __init__(self, parent=None):
        self.parent = vtk.vtkRenderWindowInteractor()
        if (parent is not None):
            self.parent = parent

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

    def keyPress(self, obj, event):
        key = self.parent.GetKeySym()
        if key == 'Up':
            # 產生隨機顏色
            r = vtk.vtkMath.Random()
            g = vtk.vtkMath.Random()
            b = vtk.vtkMath.Random()
            actor.GetProperty().SetColor(r, g, b)
            # 下面這一行是關鍵,實現了actor的更新
            renWin.Render()


# 在此處修改幾何類型
cube = vtk.vtkCubeSource()

mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(cube.GetOutputPort())

actor = vtk.vtkActor()
actor.SetMapper(mapper)
# 修改actor初始顏色
actor.GetProperty().SetColor(1.0, 1.0, 1.0)
# 修改actor初始狀態旋轉角度
actor.RotateX(30.0)
actor.RotateY(-45.0)

ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)

iren.SetInteractorStyle(KeyPressInteractorStyle(parent=iren))

ren.AddActor(actor)
# 修改背景顏色
ren.SetBackground(0.1, 0.2, 0.3)
# 修改窗口大小
renWin.SetSize(300, 300)

iren.Initialize()

ren.ResetCamera()
ren.GetActiveCamera().Zoom(1.5)
renWin.Render()

iren.Start()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章