Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么MlabSceneModel的灯光管理器没有设置?_Python_Mayavi - Fatal编程技术网

Python 为什么MlabSceneModel的灯光管理器没有设置?

Python 为什么MlabSceneModel的灯光管理器没有设置?,python,mayavi,Python,Mayavi,我正在使用Mayavi与TraitsUI进行三维可视化。场景是MlabSceneModel类型的一个特征。我想更改照明并尝试在激活的事件中调用的功能中访问场景.light\u manager。但是,scene.light\u manager始终为None 使用mlab.figure()创建一个具有灯光管理器的场景,但由于我希望将场景集成到UI中,而不是其他窗口中,这对我来说是没有选择的。这是一个很好的问题,一开始让我感到困惑 查看tvtk源,生成交互器时会将灯光管理器添加到场景中,这发生在场景激

我正在使用Mayavi与TraitsUI进行三维可视化。
场景
是MlabSceneModel类型的一个特征。我想更改照明并尝试在激活的
事件中调用的功能中访问
场景.light\u manager
。但是,
scene.light\u manager
始终为
None


使用
mlab.figure()
创建一个具有灯光管理器的场景,但由于我希望将场景集成到UI中,而不是其他窗口中,这对我来说是没有选择的。

这是一个很好的问题,一开始让我感到困惑

查看tvtk源,生成交互器时会将灯光管理器添加到场景中,这发生在场景激活之后。此外,我尝试的第一件事是听
“场景:灯光管理器”
不起作用,因为灯光管理器是一个不会直接改变的
属性。也就是说,如果您监听对象本身(属性引用该对象),它将在创建时触发通知。换句话说,请执行以下操作:

class Application(HasTraits):
  scene=Instance(MlabSceneModel,())

  ...

  @on_trait_change('scene:scene_editor:light_manager')
  def muck_with_the_lights(self):
    print self.scene.light_manager

这是一个好问题,一开始让我大吃一惊

查看tvtk源,生成交互器时会将灯光管理器添加到场景中,这发生在场景激活之后。此外,我尝试的第一件事是听
“场景:灯光管理器”
不起作用,因为灯光管理器是一个不会直接改变的
属性。也就是说,如果您监听对象本身(属性引用该对象),它将在创建时触发通知。换句话说,请执行以下操作:

class Application(HasTraits):
  scene=Instance(MlabSceneModel,())

  ...

  @on_trait_change('scene:scene_editor:light_manager')
  def muck_with_the_lights(self):
    print self.scene.light_manager

顺便说一句,既然您提到了
mlab.figure
,那么
mlab.figure
所做的就是设置当前的图形。如果没有,这会创建一个新的场景,但是可以设置图形a la
fig=mlab.figure(figure=self.scene.mayavi_scene,bgcolor='yellow')
或者类似的东西。这与当前的问题无关。顺便说一句,既然您提到了
mlab.figure
,那么
mlab.figure
所做的就是设置当前的图形。如果没有,这会创建一个新的场景,但是可以设置图形a la
fig=mlab.figure(figure=self.scene.mayavi_scene,bgcolor='yellow'))
或类似的东西。这与眼前的问题无关。