A workaround seems to have been found that avoids the hang (so far). A flag (__doPaintEvent()) has been added to QVTKRenderWindowInteractor (see attached) that allows paintEvent() to be called only if the flag is True. It is initialized in the init() function and is set before calls to the update() function are made. Note that this approach works in QVTKRenderWindowInteractor provided by Mayavi, too.
QVTKRenderWindowInteractor.py (26.8 KB)