The issue is code with QVTKRenderWindowInteractor on macOS that worked with
VTK 9.4.2 and PySide6 6.9.3 fails to display anything after updating to PySide 6.10.1.
No error message is displayed–it just hangs. Pressing ctrl-c during the run yields the following
message:
Error calling Python override of QWidget::paintEvent(): Traceback (most recent call last):
File "/Users/nchampag/Documents/python/virtual/pyside6/lib/python3.13/site-packages/vtkmodules/qt/QVTKRenderWindowInteractor.py", line 465, in paintEvent
self._Iren.Render()
Note that we tried using VTK 9.5.2, but it yielded the same hanging result.
FYI, the example works on Windows 10 with VTK 9.4.2 and PySide6 6.9.3/6.10.1.
Here is an example script:
#!/usr/bin/env python3
import sys
import vtkmodules.vtkInteractionStyle
import vtkmodules.vtkRenderingUI
import vtkmodules.vtkRenderingOpenGL2
from PySide6 import QtGui, QtWidgets
from vtkmodules.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
from vtkmodules.vtkFiltersSources import vtkSphereSource
from vtkmodules.vtkRenderingCore import (
vtkActor,
vtkPolyDataMapper,
vtkRenderer
)
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
QtWidgets.QMainWindow.__init__(self, parent)
self.frame = QtWidgets.QFrame()
self.vl = QtWidgets.QVBoxLayout()
self.vtkWidget = QVTKRenderWindowInteractor(self.frame)
self.vl.addWidget(self.vtkWidget)
self.ren = vtkRenderer()
self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()
# Create source
source = vtkSphereSource()
source.SetCenter(0, 0, 0)
source.SetRadius(5.0)
# Create a mapper
mapper = vtkPolyDataMapper()
mapper.SetInputConnection(source.GetOutputPort())
# Create an actor
actor = vtkActor()
actor.SetMapper(mapper)
self.ren.AddActor(actor)
self.ren.ResetCamera()
self.frame.setLayout(self.vl)
self.setCentralWidget(self.frame)
self.show()
self.iren.Initialize()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec())
Any ideas?
Thanks.