import sys
import vtk
from PyQt5.QtWidgets import *
from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
# 创建一个VTK渲染窗口和渲染器
class VTKWidget(QVTKRenderWindowInteractor):
def __init__(self, parent=None):
super(VTKWidget, self).__init__(parent)
self.Initialize() # 初始化VTK渲染窗口
self.Start() # 开始渲染循环
self.GetRenderWindow().GetInteractor().SetInteractorStyle(vtk.vtkInteractorStyleTrackballCamera())
# 创建渲染器和渲染窗口
self.renderer = vtk.vtkRenderer()
self.GetRenderWindow().AddRenderer(self.renderer)
# 创建一个圆球
sphere_source = vtk.vtkSphereSource()
sphere_source.SetRadius(5.0)
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(sphere_source.GetOutputPort())
actor = vtk.vtkActor()
actor.SetMapper(mapper)
# 将圆球添加到渲染器中
self.renderer.AddActor(actor)
self.renderer.ResetCamera()
# PyQt的主窗口类
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
# 设置窗口布局
central_widget = QWidget()
self.setCentralWidget(central_widget)
layout = QVBoxLayout(central_widget)
# 添加VTK渲染窗口
self.vtk_widget = VTKWidget()
layout.addWidget(self.vtk_widget)
if __name__ == "__main__":
app = QApplication(sys.argv)
# 创建主窗口
window = MainWindow()
window.show()
# 运行PyQt应用程序
sys.exit(app.exec_())
上述代码可以初步显示一个可以交互的三维小球demo!