在PySide中嵌入VTK

来源:互联网 发布:SEO优化 编辑:程序博客网 时间:2024/05/18 16:35

在用C++时,作为官方搭配,Qt和VTK是一对好基友,本文试试python下这对基友是否暧昧依旧? 这里用的是Qt的python版本:PySide,下载官方编译好的python支持包:vtkpython-6.3.0-Windows-64bit.exe。


0.环境变量:
Path : D:\Program Files\VTK 6.3.0\bin;
PYTHONPATH : D:\Program Files\VTK 6.3.0\bin\Lib\site-packages;

1. 导入vtk包:
import vtk
from vtk import *
测试VTK是否可用:
print vtk.vtkVersion.GetVTKSourceVersion()

2. 测试代码:
import vtk    cone_a=vtk.vtkConeSource()    coneMapper = vtk.vtkPolyDataMapper()  coneMapper.SetInputConnection(cone_a.GetOutputPort())    coneActor = vtk.vtkActor()  coneActor.SetMapper(coneMapper)      ren1= vtk.vtkRenderer()  ren1.AddActor( coneActor )  ren1.SetBackground( 0.1, 0.2, 0.4 )    renWin = vtk.vtkRenderWindow()  renWin.AddRenderer( ren1 )  renWin.SetSize( 300, 300 )  renWin.Render()    iren=vtk.vtkRenderWindowInteractor()  iren.SetRenderWindow(renWin)    iren.Initialize()  iren.Start()
3. GUI,只贴出main.py,自动生成的ui.py就不贴了。这样写挺烦,不过之后应该能封装。嗯,先这样,一步一步来。
__author__ = 'winston-pc'from PySide import QtCore, QtGuifrom PySide.QtGui import QApplicationimport vtkfrom vtk.qt4.QVTKRenderWindowInteractor import QVTKRenderWindowInteractorimport sysclass MWindow(QMainWindow,Ui_MainWindow):    def __init__(self, parent=None):        super(MWindow,self).__init__(parent)        self.ui = Ui_MainWindow()        self.setupUi(self)        self.ui.gridlayout = QtGui.QGridLayout(self.widget)        self.ui.vtkWidget = QVTKRenderWindowInteractor(self.widget)        self.ui.gridlayout.addWidget(self.ui.vtkWidget, 0, 0, 1, 1)        self.ren = vtk.vtkRenderer()        self.ui.vtkWidget.GetRenderWindow().AddRenderer(self.ren)        self.iren = self.ui.vtkWidget.GetRenderWindow().GetInteractor()......# Create sourcesource = vtk.vtkConeSource()# Create a mappermapper = vtk.vtkPolyDataMapper()mapper.SetInputConnection(source.GetOutputPort())# Create an actoractor = vtk.vtkActor()actor.SetMapper(mapper)self.ren.AddActor(actor)self.ren.SetBackground( 0.1, 0.2, 0.4 )......# Main Functionif __name__=='__main__':    app = QApplication(sys.argv)    Window = MWindow()    Window.show()    Window.iren.Initialize()......    sys.exit(app.exec_())    #Program.exec_()


总是想做的太多,能做的太少,时间和精力只有那么多,所以整个故事的结果就又交给了选择,哎~~!
关键词:自律

参考文献:
1.http://www.cnblogs.com/21207-iHome/articles/6427253.html
2.http://www.vtk.org/Wiki/VTK/Examples/Python/Widgets/EmbedPyQt2


原创粉丝点击