在PySide中嵌入VTK

本文介绍如何在Python环境中使用PySide结合VTK进行三维图形的绘制与交互操作,并提供了一个具体的示例代码,展示了从环境配置到GUI界面开发的全过程。

在用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, QtGui
from PySide.QtGui import QApplication

import vtk
from vtk.qt4.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
import sys

class 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 source
source = vtk.vtkConeSource()

# Create a mapper
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(source.GetOutputPort())

# Create an actor
actor = vtk.vtkActor()
actor.SetMapper(mapper)

self.ren.AddActor(actor)
self.ren.SetBackground( 0.1, 0.2, 0.4 )
......

# Main Function
if __name__=='__main__':
    app = QApplication(sys.argv)
    Window = MWindow()
    Window.show()
    Window.iren.Initialize()
......
    sys.exit(app.exec_())
    #Program.exec_()


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

参考文献:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值