<div dir="ltr"><div class="gmail_default" style="font-family:&#39;trebuchet ms&#39;,sans-serif">I&#39;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:&#39;trebuchet ms&#39;,sans-serif">

<br></div><div class="gmail_default" style="font-family:&#39;trebuchet ms&#39;,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">    &#39;&#39;&#39;</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">    &#39;&#39;&#39;</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 + &quot;/Data/headsq/quarter&quot;)</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, &quot;wxVTKRenderWindowInteractor&quot;, 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(&quot;ExitEvent&quot;, 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__ == &quot;__main__&quot;:</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:&#39;trebuchet ms&#39;,sans-serif"><br></div><div><br></div>-- <br><div>python -c &#39;import this&#39;</div>Rafael Lopes<div style="font-family:&#39;trebuchet ms&#39;,sans-serif;display:inline" class="gmail_default">

</div><div><br></div>
</div>