Я хочу захватить mouse release
события в виде майяви. В частности, мне нужно щелкнуть объект, повернуть его, а затем получить информацию о выходе мыши.
Попытка:
Стандарт Mayavi on_mouse_pick
не может обнаружить такое поведение (см. approach 1
в приведенном ниже коде).
Однако, vtk (на котором построен Mayavi) DOES имеет определенную функцию LeftButtonReleaseEvent()
. Это знание было найдено по адресу:
https://www.vtk.org/doc/nightly/html/classvtkRenderWindowInteractor.html
Я написал код ниже, который эффективно использует этот онлайн-документ и может вызывать аналогичную функцию из этого списка: LeftButtonPressEvent()
(см. approach 2
ниже). В то время как LeftButtonPressEvent()
работает, как-то LeftButtonReleaseEvent()
не работает (и то же самое для средних, правых кликов).
Я уже несколько дней ломаю себе голову - кто-нибудь понимает, что это за исключением прямой ошибки? Кто-нибудь может проверить на своих компьютерах, чтобы убедиться?
from __future__ import print_function
import numpy as np
from mayavi import mlab
from tvtk.api import tvtk
###################
### mayavi section:
fig1 = mlab.figure(1)
mlab.test_contour3d()
mlab.title('click me')
##############
# approach 1:
#def picker_callback(picker_obj):
#print('click recieved')
#fig1.on_mouse_pick(picker_callback)
##############
# approach 2:
def press_callback(vtk_obj, event):
print('pressed')
def release_callback(vtk_obj, event):
print('released')
fig1.scene.interactor.add_observer('LeftButtonPressEvent', press_callback) #works
fig1.scene.interactor.add_observer('LeftButtonReleaseEvent', release_callback) #doesn't work
mlab.show()