<div dir="ltr"><div class="gmail_default" style="font-family:'trebuchet ms',sans-serif">I'm having some trouble with a RenderWindow poping out of a wx.Frame. Is this a bug or a issue with my code.</div><div class="gmail_default" style="font-family:'trebuchet ms',sans-serif">
<br></div><div class="gmail_default" style="font-family:'trebuchet ms',sans-serif">Sample code:</div><div class="gmail_default"><font face="courier new, monospace"><br></font></div><div class="gmail_default"><div class="gmail_default">
<font face="courier new, monospace">import vtk</font></div><div class="gmail_default"><font face="courier new, monospace">import wx</font></div><div class="gmail_default"><font face="courier new, monospace">from vtk.wx.wxVTKRenderWindowInteractor import wxVTKRenderWindowInteractor</font></div>
<div class="gmail_default"><font face="courier new, monospace"><br></font></div><div class="gmail_default"><font face="courier new, monospace">from controller.slice_viewer.BaseInteractorStyle import BaseInteractorStyle</font></div>
<div class="gmail_default"><font face="courier new, monospace">class SliceViewer(object):</font></div><div class="gmail_default"><font face="courier new, monospace"> '''</font></div><div class="gmail_default">
<font face="courier new, monospace"> Pane do wx visualizador de um plano de uma imagem. </font></div><div class="gmail_default"><font face="courier new, monospace"> Decorator do vtkResliceImageViewer.</font></div>
<div class="gmail_default">
<font face="courier new, monospace"> '''</font></div><div class="gmail_default"><font face="courier new, monospace"> ORIENTATION_XY = vtk.vtkResliceImageViewer.SLICE_ORIENTATION_XY </font></div><div class="gmail_default">
<font face="courier new, monospace"> ORIENTATION_YZ = vtk.vtkResliceImageViewer.SLICE_ORIENTATION_YZ </font></div><div class="gmail_default"><font face="courier new, monospace"> ORIENTATION_XZ = vtk.vtkResliceImageViewer.SLICE_ORIENTATION_XZ</font></div>
<div class="gmail_default"><font face="courier new, monospace"><br></font></div><div class="gmail_default"><font face="courier new, monospace"><br></font></div><div class="gmail_default"><font face="courier new, monospace"> def __init__(self, parent, ID):</font></div>
<div class="gmail_default"><font face="courier new, monospace"> self._slice = 0</font></div><div class="gmail_default"><font face="courier new, monospace"> self._viewer = vtk.vtkImageViewer2()</font></div><div class="gmail_default">
<font face="courier new, monospace"> self._interactor = wxVTKRenderWindowInteractor(parent, ID)</font></div><div class="gmail_default"><font face="courier new, monospace"> self._viewer.SetRenderWindow(self._interactor.GetRenderWindow())</font></div>
<div class="gmail_default"><font face="courier new, monospace"> self._viewer.SetupInteractor(self._interactor)</font></div><div class="gmail_default"><font face="courier new, monospace"> self._interactor.GetRenderWindow().AddRenderer(self._viewer.GetRenderer())</font></div>
<div class="gmail_default"><font face="courier new, monospace"> #self._viewer.SetSliceScrollOnMouseWheel(1)</font></div><div class="gmail_default"><font face="courier new, monospace"> #self._viewer.SetThickMode(0)</font></div>
<div class="gmail_default"><font face="courier new, monospace"> self.actors = []</font></div><div class="gmail_default"><font face="courier new, monospace"> self.actor_renderer = self._viewer.GetRenderer()</font></div>
<div class="gmail_default"><font face="courier new, monospace"> </font></div><div class="gmail_default"><font face="courier new, monospace"> </font></div><div class="gmail_default"><font face="courier new, monospace"> </font></div>
<div class="gmail_default"><font face="courier new, monospace"> def __getattr__(self,name):</font></div><div class="gmail_default"><font face="courier new, monospace"> return getattr(self._viewer, name)</font></div>
<div class="gmail_default"><font face="courier new, monospace"> </font></div><div class="gmail_default"><font face="courier new, monospace"> def SetInteractorStyle(self, style):</font></div><div class="gmail_default">
<font face="courier new, monospace"> style.set_main_interactor(self._interactor)</font></div><div class="gmail_default"><font face="courier new, monospace"> </font></div><div class="gmail_default"><font face="courier new, monospace"> def GetWxWidget(self):</font></div>
<div class="gmail_default"><font face="courier new, monospace"> return self._interactor</font></div><div class="gmail_default"><font face="courier new, monospace"> </font></div><div class="gmail_default"><font face="courier new, monospace"> def AddActor(self, actor):</font></div>
<div class="gmail_default"><font face="courier new, monospace"> self.actors.append(actor)</font></div><div class="gmail_default"><font face="courier new, monospace"> self.actor_renderer.AddActor(actor)</font></div>
<div class="gmail_default"><font face="courier new, monospace"> </font></div><div class="gmail_default"><font face="courier new, monospace"> def SetCursor(self, cursor):</font></div><div class="gmail_default"><font face="courier new, monospace"> cursorMapper = vtk.vtkPolyDataMapper()</font></div>
<div class="gmail_default"><font face="courier new, monospace"> cursorMapper.SetInputConnection(cursor.GetOutputPort())</font></div><div class="gmail_default"><font face="courier new, monospace"> self.cursorActor = vtk.vtkActor()</font></div>
<div class="gmail_default"><font face="courier new, monospace"> self.cursorActor.SetMapper(cursorMapper)</font></div><div class="gmail_default"><font face="courier new, monospace"> self.cursorActor.GetProperty().SetColor(1,0,0)</font></div>
<div class="gmail_default"><font face="courier new, monospace"> self.AddActor(self.cursorActor)</font></div><div class="gmail_default"><font face="courier new, monospace"> </font></div><div class="gmail_default">
<font face="courier new, monospace"> </font></div><div class="gmail_default"><font face="courier new, monospace">def test():</font></div><div class="gmail_default"><font face="courier new, monospace"> # every wx app needs an app</font></div>
<div class="gmail_default"><font face="courier new, monospace"> from vtk.util.misc import vtkGetDataRoot</font></div><div class="gmail_default"><font face="courier new, monospace"> VTK_DATA_ROOT = vtkGetDataRoot()</font></div>
<div class="gmail_default"><font face="courier new, monospace"># Start by loading some data.</font></div><div class="gmail_default"><font face="courier new, monospace"> v16 = vtk.vtkVolume16Reader()</font></div><div class="gmail_default">
<font face="courier new, monospace"> v16.SetDataDimensions(64, 64)</font></div><div class="gmail_default"><font face="courier new, monospace"> v16.SetDataByteOrderToLittleEndian()</font></div><div class="gmail_default">
<font face="courier new, monospace"> v16.SetFilePrefix(VTK_DATA_ROOT + "/Data/headsq/quarter")</font></div><div class="gmail_default"><font face="courier new, monospace"> v16.SetImageRange(1, 93)</font></div>
<div class="gmail_default"><font face="courier new, monospace"> v16.SetDataSpacing(3.2, 3.2, 1.5)</font></div><div class="gmail_default"><font face="courier new, monospace"> v16.Update()</font></div><div class="gmail_default">
<font face="courier new, monospace"><br></font></div><div class="gmail_default"><font face="courier new, monospace"><br></font></div><div class="gmail_default"><font face="courier new, monospace"> # create the top-level frame, sizer and wxVTKRWI</font></div>
<div class="gmail_default"><font face="courier new, monospace"> app = wx.PySimpleApp()</font></div><div class="gmail_default"><font face="courier new, monospace"> frame = wx.Frame(None, -1, "wxVTKRenderWindowInteractor", size=(400,400))</font></div>
<div class="gmail_default"><font face="courier new, monospace"> siv = SliceViewer(frame, -1)</font></div><div class="gmail_default"><font face="courier new, monospace"> siv.SetSliceOrientation(-0)</font></div><div class="gmail_default">
<font face="courier new, monospace"> siv.SetInput(v16.GetOutput())</font></div><div class="gmail_default"><font face="courier new, monospace"> </font></div><div class="gmail_default"><font face="courier new, monospace"><br>
</font></div><div class="gmail_default"><font face="courier new, monospace"> </font></div><div class="gmail_default"><font face="courier new, monospace"> siv.SetInteractorStyle(BaseInteractorStyle())</font></div><div class="gmail_default">
<font face="courier new, monospace"> sizer = wx.BoxSizer(wx.VERTICAL)</font></div><div class="gmail_default"><font face="courier new, monospace"> frame.SetSizer(sizer)</font></div><div class="gmail_default"><font face="courier new, monospace"> frame.Layout()</font></div>
<div class="gmail_default"><font face="courier new, monospace"> </font></div><div class="gmail_default"><font face="courier new, monospace"> cone = vtk.vtkConeSource()</font></div><div class="gmail_default"><font face="courier new, monospace"> cone.SetResolution(8)</font></div>
<div class="gmail_default"><font face="courier new, monospace"><br></font></div><div class="gmail_default"><font face="courier new, monospace"> coneMapper = vtk.vtkPolyDataMapper()</font></div><div class="gmail_default">
<font face="courier new, monospace"> coneMapper.SetInputConnection(cone.GetOutputPort())</font></div><div class="gmail_default"><font face="courier new, monospace"><br></font></div><div class="gmail_default"><font face="courier new, monospace"> coneActor = vtk.vtkActor()</font></div>
<div class="gmail_default"><font face="courier new, monospace"> coneActor.SetMapper(coneMapper)</font></div><div class="gmail_default"><font face="courier new, monospace"> </font></div><div class="gmail_default"><font face="courier new, monospace"> siv.AddActor(coneActor)</font></div>
<div class="gmail_default"><font face="courier new, monospace"> </font></div><div class="gmail_default"><font face="courier new, monospace"> w = siv.GetWxWidget()</font></div><div class="gmail_default"><font face="courier new, monospace"> sizer.Add(w, 1, wx.EXPAND)</font></div>
<div class="gmail_default"><font face="courier new, monospace"> w.AddObserver("ExitEvent", lambda o,e: frame.Close())</font></div><div class="gmail_default"><font face="courier new, monospace"> w.Enable(1)</font></div>
<div class="gmail_default"><font face="courier new, monospace"> siv.SetSlice(3)</font></div><div class="gmail_default"><font face="courier new, monospace"> frame.Show()</font></div><div class="gmail_default"><font face="courier new, monospace"> app.MainLoop()</font></div>
<div class="gmail_default"><font face="courier new, monospace"><br></font></div><div class="gmail_default"><font face="courier new, monospace">if __name__ == "__main__":</font></div><div class="gmail_default"><font face="courier new, monospace"> test()</font></div>
<div><font face="courier new, monospace"><br></font></div></div><div class="gmail_default" style="font-family:'trebuchet ms',sans-serif"><br></div><div><br></div>-- <br><div>python -c 'import this'</div>Rafael Lopes<div style="font-family:'trebuchet ms',sans-serif;display:inline" class="gmail_default">
</div><div><br></div>
</div>