[vtkusers] Again python debugging

Willi Huber surfersparadise85-vtk at yahoo.com
Thu Jan 17 13:20:43 EST 2013


I have solved the problem at least for the left mousebutton. The rest is pretty straight forward. It is all about styles.
Don't know why the standard doesn't work out of the box when embedded into a QVTKWidget when it does outside this widget. It also seems to work under C++ without style changes. At least this is what the provided example in the sources makes me believe.
Why is this? Can anyone explain at least this to me? Or am I doing something wrong?

Here is the solution if the left mousebutton was clicked not to come up with a weird crash:

interactorStyle = vtk.vtkInteractorStyleImage()
widget.GetRenderWindow().GetInteractor().SetInteractorStyle( interactorStyle )

Cheers,
Willi




>________________________________
> Von: Willi Huber <surfersparadise85-vtk at yahoo.com>
>An: "vtkusers at vtk.org" <vtkusers at vtk.org> 
>Gesendet: 17:56 Donnerstag, 17.Januar 2013
>Betreff: Re: [vtkusers] Again python debugging
> 
>
>Dear Users of the VTK world,
>
>
>I have tried a lot now and my conclusion is that all the problems I am facing have to do with the combination of VTK and Qt. Whenever I let Qt go and I use a usual RenderWindow and do the setup as intended everything is just fine.
>
>
>I now switched to using the QVTKWidget and tried to rebuild the Examples\GUI\Qt\FourPaneViewer Example of the vtk-source-tree in Python (because of the vtkResliceImageViewer) with just one widget now . All the settings are the same. Also the Observer or rather the Callback is there. Still the same error. I am desperately searching for an answer how to make it work. 
>
>
>
>
>My current code:
>
>
>==== python code ====
>        reader = vtk.vtkMetaImageReader()
>        reader.SetFileName( file )
>        reader.Update()
>
>
>        widget = qvtk.QVTKWidget( self.widget )
>
>
>        layout = QtGui.QVBoxLayout()
>        layout.addWidget( widget )
>
>
>        self.slider = QtGui.QSlider( Qt.Horizontal, self.widget )
>        layout.addWidget( self.slider )
>
>
>        self.widget.setLayout( layout )
>
>
>        viewer = vtk.vtkResliceImageViewer()
>        widget.SetRenderWindow( viewer.GetRenderWindow() )
>        viewer.SetupInteractor( widget.GetRenderWindow().GetInteractor() )
>
>
>        vtk.vtkResliceCursorLineRepresentation.SafeDownCast( viewer.GetResliceCursorWidget().GetRepresentation() ).GetResliceCursorActor().GetCursorAlgorithm().SetReslicePlaneNormal( 2 )
>        viewer.SetInputConnection( reader.GetOutputPort() )
>        viewer.SetSlice( 50 )
>        viewer.SetSliceOrientation( 2 )
>        viewer.SetResliceModeToAxisAligned()
>
>
>        cbk = vtkResliceCursorCallback()
>
>
>        viewer.GetResliceCursorWidget().AddObserver( 'vtkResliceCursorWidget::ResliceAxesChangedEvent', cbk )
>        viewer.GetResliceCursorWidget().AddObserver( 'vtkResliceCursorWidget::WindowLevelEvent', cbk )
>        viewer.GetResliceCursorWidget().AddObserver( 'vtkResliceCursorWidget::ResliceThicknessChangedEvent', cbk )
>        viewer.GetResliceCursorWidget().AddObserver( 'vtkResliceCursorWidget::ResetCursorEvent', cbk )
>        viewer.GetInteractorStyle().AddObserver( 'vtkCommand::WindowLevelEvent', cbk )
>
>
>        widget.show()
>
>
>==== end code ====
>
>
>Where vtkResliceCursorCallback is this:
>
>
>==== python code ====
>class vtkResliceCursorCallback:
>   def __init__( self ):
>       self.CallDataType = 'string0'
>
>
>   # Execute method usually
>   def __call__( self, obj, event, message ):
>       print event
>
>
>==== end code ====
>
>
>
>I used the ErrorObserver of David Gobbi as guide.
>
>
>
>
>
>Please can anyone help me? Please Please.
>
>
>
>
>
>
>
>
>>________________________________
>> Von: Willi Huber <surfersparadise85-vtk at yahoo.com>
>>An: surfersparadise85-vtk at yahoo.com; vtkusers at vtk.org 
>>Gesendet: 12:07 Mittwoch, 16.Januar 2013
>>Betreff: AW: [vtkusers] Again python debugging
>> 
>>
>>Anyone?
>>
>>
>>
>>------------------------------
>>Willi Huber schrieb am Di., 15. Jan 2013 04:55 MEZ:
>>
>>>Hello all,
>>>
>>>I am trying to do some new stuff and I am again hitting the debugging barriers of vtk in python.
>>>
>>>My code:
>>>
>>>        file = "test.mhd"
>>>
>>>        reader = vtk.vtkMetaImageReader()
>>>        reader.SetFileName(file)
>>>        reader.Update()  #just for checking because I had an observer attached to reader
>>>        
>>>
>>>        iren = QVTKRenderWindowInteractor(self.widget)
>>>        ren = vtk.vtkRenderer()
>>>
>>>        iren.GetRenderWindow().AddRenderer(ren)
>>>
>>>                   
   
>>>
>>>        viewer = vtk.vtkResliceImageViewer()
>>>        viewer.SetRenderWindow(iren.GetRenderWindow())
>>>
>>>        viewer.SetRenderer(ren)
>>>        viewer.SetupInteractor(iren)
>>>        viewer.SetInput(reader.GetOutput())
>>>        
>>>        viewer.SetSlice(50)
>>>        viewer.SetColorWindow(2000.0)
>>>        viewer.SetColorLevel(1000.0)
>>>        
>>>        layout = QtGui.QVBoxLayout()
>>>
>>>        layout.addWidget(iren)
>>>        
>>>        self.slider = QtGui.QSlider(Qt.Horizontal, self.widget)
>>>       
 layout.addWidget(self.slider)
>>>        
>>>        self.widget.setLayout(layout)
>>>        
>>>        iren.Initialize()
>>>        iren.Start()
>>>
>>>I can see the image in the first place.
>>>When I use the right mouse button everything is fine and I can zoom in and out but when using the left mouse button the app suddenly freezes and the debugging window of Win7 appears - not the VTK window. It is sth. with a malloc at least this is what the debugger told me or rather stepped in.
>>>I tried using the Error Observer suggested by David and mined every object I've access to. I also used the vtk.vtkFileOutputWindow() without any success. No file was written.
>>>(The slider isn't currently attached to any object so you can ignore it.) Am I doing sth. wrong with the initialization?
>>>
>>>Can
 someone help me with this?
>>>
>>>Cheers,
>>>Willi
>>
>>
>>
>_______________________________________________
>Powered by www.kitware.com
>
>Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
>Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>
>Follow this link to subscribe/unsubscribe:
>http://www.vtk.org/mailman/listinfo/vtkusers
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130117/2569100f/attachment.htm>


More information about the vtkusers mailing list