Can I add Paraview's renderer or interactor to my PyQt5 application?

806 Views Asked by At

A simple example of a python script that renders using paraview.simple is

 from paraview.simple import *                                                  
                                                                                
 sphere = Sphere(ThetaResolution=16, PhiResolution=32)                          
 shrink = Shrink(sphere)                                                        
 Show(shrink)                                                                   
 Render()
 Interact()

Can I add this render to a PyQt5 application in a manner similar to the way I can add the vtk renderer? In vtk, this is acheived with the line

from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor

This interactor is added as a widget. Can I e.g. Add paraview simple renderer or interactor as a widget?

1

There are 1 best solutions below

2
On BEST ANSWER

You can supply a render window and interactor when initializing QVTKRenderWindowInteractor, i.e.

import paraview.simple as pvsimple
from vtkmodules.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
from PyQt5 import QtWidgets

app = QtWidgets.QApplication([])

# setup render widget
render_view = pvsimple.CreateRenderView()
render_widget = QVTKRenderWindowInteractor(rw=render_view.GetRenderWindow(),
                                           iren=render_view.GetInteractor())
render_widget.Initialize()

# add paraview simple sources/filters
sphere = pvsimple.Sphere(ThetaResolution=16, PhiResolution=32)
shrink = pvsimple.Shrink(sphere)
pvsimple.Show(shrink, render_view)

# show widget
render_widget.show()
app.exec()