VTK Python PyQt 监听键盘 控制 Actor 移动 变色

KeyPressInteractorStyle

在vtk 中有时我们需要监听 键盘或鼠标做一些事;

1. 创建 Actor;

Sphere = vtk.vtkSphereSource()
Sphere.SetRadius(10)

mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(Sphere.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
actor.GetProperty().SetColor(0.0, 1.0, 0.0)

2.创建 vtkRenderer vtkRenderWindow vtkRenderWindowInteractor

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

3.重写交互器 Style

class KeyPressInteractorStyle(vtk.vtkInteractorStyleTrackballCamera):

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

        self.AddObserver("KeyReleaseEvent", self.keyRelease)

    def keyRelease(self, obj, event):
        key = self.parent.GetKeySym()
        if key == 'Up':
           pt =  actor.GetPosition()
           actor.SetPosition(pt[0],pt[1]+5,pt[2])
        elif key == 'Down':
           pt =  actor.GetPosition()
           actor.SetPosition(pt[0],pt[1]-5,pt[2])
        if key == 'Left':
           pt =  actor.GetPosition()
           actor.SetPosition(pt[0]-5,pt[1],pt[2])
        elif key == 'Right':
           pt =  actor.GetPosition()
           actor.SetPosition(pt[0]+5,pt[1],pt[2])

        elif key== 'c':
            # 产生随机颜色
            r = vtk.vtkMath.Random()
            g = vtk.vtkMath.Random()
            b = vtk.vtkMath.Random()
            actor.GetProperty().SetColor(r, g, b)
        renWin.Render()
复制代码
 4.添加交互器:
iren.SetInteractorStyle(KeyPressInteractorStyle(parent=iren))

ren.AddActor(actor)
相关推荐
恋恋西风2 天前
CT dicom 去除床板 去除床位,检查床去除
python·vtk·dicom·去床板
omage3 天前
cornerstone3D学习笔记-MPR
笔记·学习·vtk·dicom·mpr
mosquito_lover15 天前
怎么把pyqt界面做的像web一样漂亮
前端·python·pyqt
薛尧笔记9 天前
关于FSGithubPNG生成外链时描述出现路径问题
笔记·python·github·pyqt·桌面应用
蹦蹦跳跳真可爱5899 天前
Python----PyQt开发(PyQt高级:手搓一个简单的记事本)
python·pyqt
深蓝海拓10 天前
PySide(PyQT)使用场景(QGraphicsScene)进行动态标注的一个demo
开发语言·python·pyqt
#岩王爷10 天前
cv2小练习
音视频·pyqt
不知名君11 天前
PyQt组态软件 拖拽设计界面测试
python·pyqt·qt5
XS3011 天前
PyQt学习记录03——批量设置水印
学习·pyqt
蹦蹦跳跳真可爱58911 天前
Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)
开发语言·python·pyqt