次のスクリプトを検討してください
import vtk
ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
an_actor = vtk.... # create an actor
ren.AddActor(an_actor)
iren.Initialize()
renWin.Render()
iren.Start()
スクリプトがそこで終了すると、すべてが正常になり、ウィンドウを手動で閉じる(Xをクリック)か、終了キーを押す(QまたはE)と、作成されたウィンドウが閉じられ、リソースが解放されます。
ただし、さらに多くのステートメントがある場合は、ウィンドウがまだそこにあることに気付くでしょう。これは、それをあきらめるために何も呼び出さず、対話ループを終了しただけなので、非常に理解できます。
以下を追加して、自分の目で確かめてください。
temp = raw_input('The window did not close, right? (press Enter)')
VTK / Examples / Cxx / Visualization / CloseWindowによると、これは
iren.GetRenderWindow().Finalize() # equivalent: renWin.Finalize()
iren.TerminateApp()
仕事を終わらせる必要がありますが、そうではありません。
開いたウィンドウをプログラムで閉じるには、他に何をする必要がありますか?