Would anyone know to tell me why single click works, but double click does not, please?
import vtk
def left_button(obj, e):
print(e)
source = vtk.vtkSphereSource()
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(source.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)
window = vtk.vtkRenderWindow()
window.AddRenderer(renderer)
window.SetSize(800, 600)
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(window)
interactor.SetInteractorStyle(vtk.vtkInteractorStyleRubberBandPick())
# interactor.AddObserver('LeftButtonPressEvent', left_button)
interactor.AddObserver('LeftButtonDoubleClickEvent', left_button)
interactor.Start()
lassoan
(Andras Lasso)
June 20, 2020, 12:39am
2
If you use Qt for your GUI then QVTKInteractorAdapter takes care of double-click events. Otherwise I think you need to implement detection of double-click events yourself, probably in the render window interactor.
Hi, @lassoan ! I had already implemented double click using Qt, but I thought it was possible using the VTK event itself. Thanks for answering!
This is the solution using Qt for anyone interested:
import sys
import vtk
from PyQt5.QtWidgets import QApplication, QMainWindow
from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
class MyQVTKRenderWindowInteractor(QVTKRenderWindowInteractor):
def mouseDoubleClickEvent(self, event):
print(event)
class MyQMainWindow(QMainWindow):
def __init__(self):
super(MyQMainWindow, self).__init__()
source = vtk.vtkSphereSource()
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(source.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)
interactor = MyQVTKRenderWindowInteractor()
interactor.GetRenderWindow().AddRenderer(renderer)
interactor.Start()
self.setCentralWidget(interactor)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = MyQMainWindow()
win.show()
sys.exit(app.exec_())