1. import vtk
  2.  
  3. class KeyPressInteractorStyle(vtk.vtkInteractorStyleTrackballCamera):
  4.  
  5. def __init__(self,parent=None):
  6. self.parent = vtk.vtkRenderWindowInteractor()
  7. if(parent is not None):
  8. self.parent = parent
  9.  
  10. self.AddObserver("KeyPressEvent",self.keyPress)
  11.  
  12. def keyPress(self,obj,event):
  13. key = self.parent.GetKeySym()
  14. if key == 'Up':
  15. #产生随机颜色
  16. r = vtk.vtkMath.Random(., 1.0)
  17. g = vtk.vtkMath.Random(., 1.0)
  18. b = vtk.vtkMath.Random(., 1.0)
  19. actor.GetProperty().SetColor(r, g, b)
  20. #下面这一行是关键,实现了actor的更新
  21. renWin.Render()
  22.  
  23. #在此处修改几何类型
  24. cube = vtk.vtkCubeSource()
  25.  
  26. mapper = vtk.vtkPolyDataMapper()
  27. mapper.SetInputConnection(cube.GetOutputPort())
  28.  
  29. actor = vtk.vtkActor()
  30. actor.SetMapper(mapper)
  31. #修改actor初始颜色
  32. actor.GetProperty().SetColor(1.0, 1.0, 1.0)
  33. #修改actor初始状态旋转角度
  34. actor.RotateX(30.0)
  35. actor.RotateY(-45.0)
  36.  
  37. ren = vtk.vtkRenderer()
  38. renWin = vtk.vtkRenderWindow()
  39. renWin.AddRenderer(ren)
  40. iren = vtk.vtkRenderWindowInteractor()
  41. iren.SetRenderWindow(renWin)
  42.  
  43. iren.SetInteractorStyle(KeyPressInteractorStyle(parent = iren))
  44.  
  45. ren.AddActor(actor)
  46. #修改背景颜色
  47. ren.SetBackground(0.1, 0.2, 0.3)
  48. #修改窗口大小
  49. renWin.SetSize(, )
  50.  
  51. iren.Initialize()
  52.  
  53. ren.ResetCamera()
  54. ren.GetActiveCamera().Zoom(1.5)
  55. renWin.Render()
  56.  
  57. iren.Start()

python vtk 通过回调函数监测键盘”Up”键动作,每按一次方向上键,actor变换一种颜色的更多相关文章

  1. python全局变量、回调函数

    1.python全局变量相关概念及使用 来自菜鸟教程上的例子: http://www.runoob.com/python3/python3-function.html 一.python入参需要注意地方 ...

  2. 对于Python中回调函数的理解

    关于回调函数,网上有很多说明和各种解释,多数在尝试用语言描述.我认为,如果对各个角色之间的关系不清楚,如果没有相关的编程需求,那么语言便非常无力,很难理解. 这是360百科的解释: 在计算机程序设计中 ...

  3. [转发]将Delphi的对象方法设为回调函数

    心血来潮,为了实现更好的通用性和封装性,需要把类方法作为回调函数,搜得一篇好文,节选转发.命名似乎应该是MethodToCallback才合适,可惜调试时总是报错,debugging. 原文地址:ht ...

  4. 将Delphi的对象方法设为回调函数

    心血来潮,为了实现更好的通用性和封装性,需要把类方法作为回调函数,搜得一篇好文,节选转发.命名似乎应该是MethodToCallback才合适,可惜调试时总是报错,debugging. 原文地址:ht ...

  5. Mqtt paho 回调函数触发机制跟踪

    Python Mqtt paho 回调函数触发机制跟踪,我使用的是 buildroot 里面的 mqtt paho , 代码在 ''' buildroot-2017.02.8/output/build ...

  6. JavaScript ES7 中使用 async/await 解决回调函数嵌套问题

    原文链接:http://aisk.me/using-async-await-to-avoid-callback-hell/ JavaScript 中最蛋疼的事情莫过于回调函数嵌套问题.以往在浏览器中, ...

  7. C++中类成员函数作为回调函数

    注:与tr1::function对象结合使用,能获得更好的效果,详情见http://blog.csdn.net/this_capslock/article/details/38564719 回调函数是 ...

  8. C++中 线程函数为静态函数 及 类成员函数作为回调函数

    线程函数为静态函数: 线程控制函数和是不是静态函数没关系,静态函数是在构造中分配的地址空间,只有在析构时才释放也就是全局的东西,不管线程是否运行,静态函数的地址是不变的,并不在线程堆栈中static只 ...

  9. C++使用模板、函数指针、接口和lambda表达式这四种方法做回调函数的区别比较

    在C++中,两个类之间存在一种关系,某个类需要另外一个类去完成某一个功能,完成了之后需要告知该类结果,这种最普通最常见的需求,往往使用回调函数来解决. 如题,我总结下来有这么四种方式可以完成这项功能, ...

随机推荐

  1. Matlab的BP神经网络工具箱及其在函数逼近中的应用

    1.神经网络工具箱概述 Matlab神经网络工具箱几乎包含了现有神经网络的最新成果,神经网络工具箱模型包括感知器.线性网络.BP网络.径向基函数网络.竞争型神经网络.自组织网络和学习向量量化网络.反馈 ...

  2. Linux下的crontab定时执行任务命令详解(参考:https://www.cnblogs.com/longjshz/p/5779215.html)

    在Linux中,周期执行的任务一般由cron这个守护进程来处理[ps -ef | grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行以及调用时间. cron的配置文件成为 ...

  3. canvas和SVG

    Canvas的介绍 1.1.创建canvas元素 canvas的定义:它是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像 ...

  4. 在vue中添加sass的配置的方法

    1.安装sass的依赖包 npm install --save-dev sass-loader //sass-loader依赖于 node-sass npm install --save-dev no ...

  5. springboot测试的方法

    @RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest( classes = {App.class})@WebAppConfigurationpu ...

  6. SSE技术详解:使用 HTTP 做服务端数据推送应用的技术

    SSE ( Server-sent Events )是 WebSocket 的一种轻量代替方案,使用 HTTP 协议. 严格地说,HTTP 协议是没有办法做服务器推送的,但是当服务器向客户端声明接下来 ...

  7. MFC如何在树形图边上添加动态小地图

    MFC如何在树形图边上添加动态小地图 https://www.jianshu.com/p/7b1d828bf5db (简书无法识别缩进的...早知道先在博客园发了) (转载请注明出处) 作者:梦镜谷雨 ...

  8. 简单gulp.js

    引入相对应的文件 let gulp = require("gulp"); let inject = require("gulp-inject"); let cl ...

  9. Vue学习Day003

    事件修饰符 在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求.尽管我们可以在方法中轻松实现这点,但更好的方式是: ...

  10. linux下socket connect 阻塞方式 阻塞时间控制

    同事今天问我,如何在linux下的c代码里面控制connect的阻塞时间.应用的背景是:linux下的c程序有两个目标IP需要connect,如果用阻塞方式,当其中一个IP不能连接的情况下,程序将阻塞 ...