VTK with PySide2 is not working

The following example is not working properly:

import sys
import PySide2
from PySide2.QtWidgets import QApplication
from vtkmodules.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
from vtkmodules.vtkFiltersSources import vtkConeSource
from vtkmodules.vtkRenderingCore import vtkActor, vtkPolyDataMapper, vtkRenderer

app = QApplication(['QVTKRenderWindowInteractor'])

widget = QVTKRenderWindowInteractor()
widget.Initialize()
widget.Start()

ren = vtkRenderer()
widget.GetRenderWindow().AddRenderer(ren)

cone = vtkConeSource()
cone.SetResolution(8)

coneMapper = vtkPolyDataMapper()
coneMapper.SetInputConnection(cone.GetOutputPort())

coneActor = vtkActor()
coneActor.SetMapper(coneMapper)

ren.AddActor(coneActor)

widget.show()
app.exec_()

It fails with the following message:

Generic Warning: In /build/vtk/src/VTK-8.2.0/Rendering/Core/vtkRenderWindow.cxx, line 35
Error: no override found for 'vtkRenderWindow'.

Traceback (most recent call last):
  File "main.py", line 10, in <module>
    widget = QVTKRenderWindowInteractor()
  File "/usr/lib/python3.8/site-packages/vtkmodules/qt/QVTKRenderWindowInteractor.py", line 262, in __init__
    self._RenderWindow = vtkRenderWindow()
NotImplementedError: no concrete implementation exists for this class

Any help why this is happening? This is the example given in the distributed QVTKRendererWindowInteractor.py file on my Arch Linux vtk installation (version 8.2.0).

Import vtkmodules.vtkRenderingOpenGL2 and it will register itself as an implementation of vtkRenderWindow.

1 Like