wxWidgets/wxPython/demo/viewer_basics.py

74 lines
2.0 KiB
Python
Raw Normal View History

# 11/15/2003 - Jeff Grimmett (grimmtooth@softhome.net)
#
# o Updated for wx namespace
# o No idea what this does.
#
import wx
import wx.lib.vtk as vtk
#---------------------------------------------------------------------------
class VtkFrame(wx.Frame):
"""
Simple example VTK window that contains a cone.
"""
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(450, 300))
win = vtk.VTKRenderWindow(self, -1)
renWin = win.GetRenderWindow()
ren = vtk.vtkRenderer()
renWin.AddRenderer(ren)
cone = vtk.vtkConeSource()
coneMapper = vtk.vtkPolyDataMapper()
coneMapper.SetInput(cone.GetOutput())
coneActor = vtk.vtkActor()
coneActor.SetMapper(coneMapper)
ren.AddActor(coneActor)
#---------------------------------------------------------------------------
# Using new event binder
wx_EVT_ADD_CONE = wx.NewEventType()
EVT_ADD_CONE = wx.PyEventBinder(wx_EVT_ADD_CONE, 1)
class AddCone(wx.PyEvent):
def __init__(self):
wx.PyEvent.__init__(self)
self.SetEventType(wx_EVT_ADD_CONE)
class HiddenCatcher(wx.Frame):
"""
The "catcher" frame in the second thread.
It is invisible. It's only job is to receive
Events from the main thread, and create
the appropriate windows.
"""
def __init__(self):
wx.Frame.__init__(self, None, -1, '')
self.Bind(EVT_ADD_CONE, self.AddCone)
def AddCone(self,evt):
add_cone()
#---------------------------------------------------------------------------
class SecondThreadApp(wx.App):
"""
wxApp that lives in the second thread.
"""
def OnInit(self):
catcher = HiddenCatcher()
#self.SetTopWindow(catcher)
self.catcher = catcher
return True
#---------------------------------------------------------------------------
def add_cone():
frame = VtkFrame(None, -1, "Cone")
frame.Show(True)