[vtkusers] vtkChartXY, QVTKRenderWindowInteractor, PyQt4
Randy Heiland
heiland at indiana.edu
Fri Jul 22 22:51:43 EDT 2011
For the archive, the following seems to do what I need (until it doesn't):
# ------- gui-chart.py ------------
import sys
from vtk import *
from vtk.qt4.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
from PyQt4 import Qt
from PyQt4 import QtGui
class test(Qt.QMainWindow):
def __init__(self, parent=None):
Qt.QMainWindow.__init__(self, parent)
self.setWindowTitle(self.tr("PyQt4 vtkChartXY"))
self.workspace = Qt.QWorkspace()
self.setCentralWidget(self.workspace)
self.frame = QtGui.QFrame(self.workspace)
self.hbox = QtGui.QHBoxLayout()
self.widget = QVTKRenderWindowInteractor(self.frame)
self.widget.Initialize()
self.widget.Start()
self.table = vtkTable()
self.arrX = vtkFloatArray()
self.arrX.SetName("X Axis")
self.table.AddColumn(self.arrX)
self.arrY = vtkFloatArray()
self.arrY.SetName("Y value")
self.table.AddColumn(self.arrY)
numPoints = 20
inc = 7.5 / (numPoints-1)
self.table.SetNumberOfRows(numPoints)
for i in range(numPoints):
self.table.SetValue(i, 0, i * inc)
self.table.SetValue(i, 1, i * inc)
self.view = vtkContextView()
self.view.GetRenderer().SetBackground(1.0, 1.0, 1.0)
self.chart = vtkChartXY()
self.view.GetScene().AddItem(self.chart)
self.line = self.chart.AddPlot(vtkChart.LINE)
self.line.SetInput(self.table, 0, 1)
self.ren = self.view.GetRenderer()
self.renWin = self.widget.GetRenderWindow()
self.renWin.AddRenderer(self.ren)
self.hbox.addWidget(self.widget)
self.frame.setLayout(self.hbox)
self.workspace.addWindow(self.frame)
if __name__ == "__main__":
app = Qt.QApplication(sys.argv)
mainwindow = test()
mainwindow.show()
sys.exit(app.exec_())
On Jul 22, 2011, at 5:47 PM, Randy Heiland wrote:
> Hi gang,
>
> I'm having problems getting a vtkChartXY displayed in PyQt4. I saw a thread related to this (vtkContextView and QWidget), but didn't see a solution for Python-land. I'll include 2 example scripts - the 1st works, the 2nd does not.
>
> thanks for any help, Randy
> <snip>
More information about the vtkusers
mailing list