« 非道すぎるけど腹抱えてわらったIndian Yoga Retreat Prank。 | トップページ | wxpythonとvtkでビデオプレーヤー作ってみる。その1。C++のJpeg表示サンプルをPythonに翻訳。 »

2013年6月17日 (月)

wxpythonのウィンドウ内部にvtkを表示するパネルを作ってみた

まあ、vtkはQtを推奨しているので普通はQtを使うのですが、wxの方が慣れているのでwxでどうやるのかなぁと思っていたら、このビデオにwxでvtkを表示するキャンバスの使い方が説明してあったので、やってみました。

ビデオではiPythonでインタラクティブにGUIスレッドを変更しながらプログラムするやり方が説明されていて、とっても便利そうです。ですが、ちょっと古い情報のようで、このビデオでつかわれている-wthreadのオプションは現在は廃止されて--guiオプションというのになっています。公式のドキュメンテーションによると、ipython0.11からPython純正のPyOSInputHookを使う方法に変更されて、安定性が強化されたためこうなった模様。というわけでwxpythonなので--gui=wxとしてipythonを起動するか、起動したあとで%guiのマジックを使用すればいいようです。

wx.Panelにドーナツを表示する

ビデオにあるコードをちょっといじってサンプルコードを書いてみました。できるだけwxとvtkを分けました。

import vtk
from vtk.wx.wxVTKRenderWindowInteractor import wxVTKRenderWindowInteractor
import wx

class vtkTestWindow(wx.Frame):

    def __init__ (self, parent):
        wx.Frame.__init__(self, parent, title='vtk test window')

        canvas = wx.Panel(self, size=(640,480))
        rwi = wxVTKRenderWindowInteractor(canvas, -1)
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(rwi, 1, wx.EXPAND)
        self.SetSizer(sizer)
        self.Layout()

        rwi.Enable(True)
        self.SetupRender()
        rwi.GetRenderWindow().AddRenderer(self.ren)

        self.Show()

    def SetupRender(self):

        # minimum vtk pipeline
        superquadric = vtk.vtkSuperquadricSource()
        superquadric.ToroidalOn()
        m = vtk.vtkPolyDataMapper()
        m.SetInput(superquadric.GetOutput())
        a = vtk.vtkActor()
        a.SetMapper(m)
        ren = vtk.vtkRenderer()
        ren.AddActor(a)

        self.ren = ren

if __name__ == '__main__':
    app = wx.App(0)
    frame = vtkTestWindow(None)
    app.MainLoop()

Donut

とりあえず表示されましたね。マウスでグリグリ回転します。コントロール押しながらマウスドラッグで拡大縮小。シフトだと縦横の移動。表示もさすがになめらかです。今日はここまで。あとはビデオプレーヤーを作ってみる予定なので、vtkの方でマウスのイベントを拾ってもらいたくないので、その辺りの変更を確認しなくては。

« 非道すぎるけど腹抱えてわらったIndian Yoga Retreat Prank。 | トップページ | wxpythonとvtkでビデオプレーヤー作ってみる。その1。C++のJpeg表示サンプルをPythonに翻訳。 »

Python」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1169291/52077669

この記事へのトラックバック一覧です: wxpythonのウィンドウ内部にvtkを表示するパネルを作ってみた:

« 非道すぎるけど腹抱えてわらったIndian Yoga Retreat Prank。 | トップページ | wxpythonとvtkでビデオプレーヤー作ってみる。その1。C++のJpeg表示サンプルをPythonに翻訳。 »

広告欄


やっつけタイムライン

広告欄

はてブ

人目の訪問です。

  • follow us in feedly

    かなり更新が不定期なため、RSSリーダーをオススメします。現在Feedlyに122人登録頂いています。多謝!RSSを表示

    ブログランキング用 にほんブログ村 IT技術ブログ Pythonへ ブログランキングならblogram






    Jenny Mayhem
2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

IT技術注目記事

無料ブログはココログ