[vtkusers] embedded VTK window in PyQt application
John Vines (CISD/HPCD)
jvines at arl.army.mil
Wed May 13 09:04:05 EDT 2009
All,
I am trying to embed a VTK renderwindow in a PyQt application and am
not sure where I am going wrong. I am using VTK 5.2.1 built with QVTK
support, Qt 4.3.3 and PyQt 4.3.3. Any pointers would be greatly
appreciated.
example python code:
#!/usr/bin/env python
import sys
import vtk
from vtk.qt4.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
from PyQt4 import Qt
class test(Qt.QMainWindow):
"""Test class"""
def __init__(self, parent=None):
Qt.QMainWindow.__init__(self, parent)
self.setWindowTitle(self.tr("PyQt4 VTK test"))
self.workspace = Qt.QWorkspace()
self.setCentralWidget(self.workspace)
# create the widget
self.widget = QVTKRenderWindowInteractor()
self.widget.Initialize()
self.widget.Start()
# if you dont want the 'q' key to exit comment this.
self.widget.AddObserver("ExitEvent", lambda o, e, a=app: a.quit())
self.ren = vtk.vtkRenderer()
self.widget.GetRenderWindow().AddRenderer(self.ren)
self.cone = vtk.vtkConeSource()
self.cone.SetResolution(8)
self.coneMapper = vtk.vtkPolyDataMapper()
self.coneMapper.SetInput(self.cone.GetOutput())
self.coneActor = vtk.vtkActor()
self.coneActor.SetMapper(self.coneMapper)
self.ren.AddActor(self.coneActor)
self.workspace.addWindow(self.widget)
if __name__ == "__main__":
app = Qt.QApplication(sys.argv)
mainwindow = test()
mainwindow.show()
sys.exit(app.exec_())
Thanks,
John
More information about the vtkusers
mailing list