如何在PyVista可视化界面中交互调整Box组件的尺寸?
如何在PyVista可视化界面中交互式调整Box尺寸
当然可行,PyVista提供了滑块组件可以直接在可视化窗口中调整参数,实时更新Box的尺寸。你可以通过add_slider_widget添加交互式滑块,结合回调函数动态修改Box的bounds参数。
修改后的代码如下:
import pyvista as pv # 初始化Box和绘图器 bounds = [0, 1, 0, 1, 0, 1] box = pv.Box(bounds) pl = pv.Plotter() actor = pl.add_mesh(box) # 定义更新Box尺寸的回调函数 def update_bounds(value, axis_min, axis_max): bounds[axis_min] = value[0] bounds[axis_max] = value[1] new_box = pv.Box(bounds) actor.mesh = new_box pl.update() # 添加X轴范围调整滑块 pl.add_slider_widget( callback=lambda value: update_bounds(value, 0, 1), rng=(0, 5), value=(bounds[0], bounds[1]), title="X轴范围", pointa=(0.02, 0.9), pointb=(0.3, 0.9), style='modern' ) # 添加Y轴范围调整滑块 pl.add_slider_widget( callback=lambda value: update_bounds(value, 2, 3), rng=(0, 5), value=(bounds[2], bounds[3]), title="Y轴范围", pointa=(0.35, 0.9), pointb=(0.63, 0.9), style='modern' ) # 添加Z轴范围调整滑块 pl.add_slider_widget( callback=lambda value: update_bounds(value, 4, 5), rng=(0, 5), value=(bounds[4], bounds[5]), title="Z轴范围", pointa=(0.68, 0.9), pointb=(0.96, 0.9), style='modern' ) pl.show()
关键说明:
- 通过
add_mesh获取返回的actor对象,后续用来更新网格数据 update_bounds回调函数负责接收滑块的数值,修改bounds数组,重新创建Box并替换actor的mesh,最后调用pl.update()刷新视图- 每个滑块对应控制一个轴向的起止范围,可通过
rng参数设置滑块的数值范围,pointa和pointb控制滑块在窗口中的位置
内容的提问来源于stack exchange,提问作者killermama98
相关产品推荐
相关产品推荐

