Slider Bar Widget

The slider widget can be enabled and disabled by the pyvista.WidgetHelper.add_slider_widget() and pyvista.WidgetHelper.clear_slider_widgets() methods respectively. This is one of the most versatile widgets as it can control a value that can be used for just about anything.

# sphinx_gallery_thumbnail_number = 1

One helper method we’ve added is the pyvista.WidgetHelper.add_mesh_threshold() method which leverages the slider widget to control a thresholding value.

import pyvista as pv
from pyvista import examples

mesh = examples.download_knee_full()

p = pv.Plotter()
p.add_mesh_threshold(mesh)
p.show()
slider bar widget

Out:

[(417.3182207980985, 431.77821988257114, 442.48772305639926),
 (74.83049774169922, 89.29049682617188, 100.0),
 (0.0, 0.0, 1.0)]

After interacting with the scene, the threshold mesh is available as:

p.threshold_meshes

Out:

[UnstructuredGrid (0x7f623a6694b0)
  N Cells:  115425
  N Points: 179772
  X Bounds: 3.760e+01, 1.171e+02
  Y Bounds: 1.446e+01, 1.338e+02
  Z Bounds: 0.000e+00, 2.000e+02
  N Arrays: 1
]

And here is a screen capture of a user interacting with this

../../_images/slider-widget-threshold.gif

Custom Callback

Or you could leverage a custom callback function that takes a single value from the slider as its argument to do something like control the resolution of a mesh. Again note the use of the name argument in add_mesh:

p = pv.Plotter()

def create_mesh(value):
    res = int(value)
    sphere = pv.Sphere(phi_resolution=res, theta_resolution=res)
    p.add_mesh(sphere, name='sphere', show_edges=True)
    return

p.add_slider_widget(create_mesh, [5, 100], title='Resolution')
p.show()
slider bar widget

Out:

[(1.9312408826647358, 1.9312408826647358, 1.9312408826647358),
 (0.0, 0.0, 0.0),
 (0.0, 0.0, 1.0)]

And here is a screen capture of a user interacting with this

../../_images/slider-widget-resolution.gif

Total running time of the script: ( 0 minutes 2.626 seconds)

Gallery generated by Sphinx-Gallery