[vtkusers] AddObserver with Python
Doug Hackworth
doug.hackworth at vanderbilt.edu
Thu May 1 15:49:01 EDT 2008
Greetings, all. I am wanting to do something like the following:
import vtk
(...)
planewidget = vtk.vtkImplicitPlaneWidget()
(...)
planewidget.AddObserver("EndInteractionEvent", MyCallbackFunction)
and I want MyCallbackFunction() to be passed some arguments, i.e. my data:
def MyCallbackFunction(PlaneWidget, Polydata, BoundaryConditions):
(...)
From what I've read at least in the C++ documentation, the proper way to do
this is to subclass vtkCommand and store the call data in the subclass, then
pass an instance of this new class to AddObserver, etc. The trouble is, I can't
seem to locate the vtkCommand class in the Python bindings... Is there supposed
to be some other way to do it for Python? It seems like the only other option
for MyCallbackFunction() to have access to my data is to have the data be global
objects, which I'd vastly prefer not to do. Insights, anyone?
Also: When I run my program with the plane widget implemented as above, the
widget seems to work fine, but I get the error:
TypeError: MyCallbackFunction() takes exactly 3 arguments (2 given)
Which two arguments are getting passed automatically? Can I add more?
Thanks,
Doug
More information about the vtkusers
mailing list