我使用Mayavi进行TraitsUI的3D可视化。 scene
是MlabSceneModel类型的特征。我想更改灯光并尝试在scene.light_manager
事件中调用的函数中访问activated
。但是,scene.light_manager
始终为None
。
使用mlab.figure()
创建一个具有灯光管理器的场景,但由于我希望场景集成在UI中而不是在其他窗口中,因此我无法选择。
答案 0 :(得分:1)
这个问题最初引起了我的反响。
查看tvtk源,当生成交互器时,灯光管理器将添加到场景中,这在场景激活后发生。此外,我尝试的第一件事就是听'scene:light_manager'
无效,因为灯光管理器是Property
特征,不会直接改变。也就是说,如果您监听属性引用的对象本身,它将触发创建通知。换句话说,这样做:
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