pyqt5+vtk(1):显示vtk视图区域+世界坐标系

2,120 阅读1分钟

显示样式

vtk视图区域

代码

class MainApp(QMainWindow, main_ui):  # 主操作界面

    # 定义构造方法
    def __init__(self):
        QMainWindow.__init__(self)
        self.setupUi(self)
        self.init_vtk_view()

    # 初始化vtk视图区域
    def init_vtk_view(self):
        # 在之前创建的view_widget上添加vtk控件
        self.vtk_vertical_layout = QVBoxLayout(self.view_widget)
        self.vtk_widget = QVTKRenderWindowInteractor(self.view_widget)
        self.vtk_vertical_layout.addWidget(self.vtk_widget)
        # 1.创建RenderWindow窗口
        self.render_window = self.vtk_widget.GetRenderWindow()
        # 2.创建render
        self.renderer = vtk.vtkRenderer()
        self.renderer.SetBackground(1.0, 1.0, 1.0)  # 设置页面底部颜色值
        self.renderer.SetBackground2(0.1, 0.2, 0.4)  # 设置页面顶部颜色值
        self.renderer.SetGradientBackground(1)  # 开启渐变色背景设置
        self.render_window.AddRenderer(self.renderer)
        self.render_window.Render()
        # 3.设置交互方式
        self.iren = self.render_window.GetInteractor()  # 获取交互器
        self.style = vtk.vtkInteractorStyleTrackballCamera()  # 交互器样式的一种,该样式下,用户是通过控制相机对物体作旋转、放大、缩小等操作
        self.style.SetDefaultRenderer(self.renderer)
        self.iren.SetInteractorStyle(self.style)
        # 4.添加世界坐标系
        axesActor = vtk.vtkAxesActor()
        self.axes_widget = vtk.vtkOrientationMarkerWidget()
        self.axes_widget.SetOrientationMarker(axesActor)
        self.axes_widget.SetInteractor(self.iren)
        self.axes_widget.EnabledOn()
        self.axes_widget.InteractiveOff()  # 坐标系是否可移动