I am looking for a way to catch keyboard events in order to cycle through different datasets in a mayavi animation.
My basic loop is:
while 1:
time = TIME() - zero
wx.Yield()
atomsanim[:,:3] = atoms[:,3:]*cos(speed*time) + atoms[:,:3]
f.scene.disable_render = True
atom_index = 0
for t, p in zip(types, plots):
ms = p.mlab_source
start = atom_index
stop = atom_index+t
ms.set(x=atomsanim[start:stop,0],y=atomsanim[start:stop,1],z=atomsanim[start:stop,2])
atom_index += t
f.scene.disable_render = False
mlab.show()
After googling around I found this page: http://osdir.com/ml/python-enthought-devel/2009-01/msg00325.html
Which pretty much solved the problem for me
scene.interactor.add_observer('KeyPressEvent', your_function);
def your_function(vtk_obj, event):
... and then play with vtk_obj.GetKeyCode()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With