{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Multiple Slider Widgets\n\nUse a class based callback to track multiple slider widgets for updating\na single mesh.\n\nIn this example we simply change a few parameters for the\n`pyvista.Sphere`{.interpreted-text role=\"func\"} method, but this could\neasily be applied to any mesh-generating/altering code.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import pyvista as pv\n\n\nclass MyCustomRoutine:\n def __init__(self, mesh):\n self.output = mesh # Expected PyVista mesh type\n # default parameters\n self.kwargs = {\n 'radius': 0.5,\n 'theta_resolution': 30,\n 'phi_resolution': 30,\n }\n\n def __call__(self, param, value):\n self.kwargs[param] = value\n self.update()\n\n def update(self):\n # This is where you call your simulation\n result = pv.Sphere(**self.kwargs)\n self.output.copy_from(result)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "starting_mesh = pv.Sphere()\nengine = MyCustomRoutine(starting_mesh)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "p = pv.Plotter()\np.add_mesh(starting_mesh, show_edges=True)\np.add_slider_widget(\n callback=lambda value: engine('phi_resolution', int(value)),\n rng=[3, 60],\n value=30,\n title=\"Phi Resolution\",\n pointa=(0.025, 0.1),\n pointb=(0.31, 0.1),\n style='modern',\n)\np.add_slider_widget(\n callback=lambda value: engine('theta_resolution', int(value)),\n rng=[3, 60],\n value=30,\n title=\"Theta Resolution\",\n pointa=(0.35, 0.1),\n pointb=(0.64, 0.1),\n style='modern',\n)\np.add_slider_widget(\n callback=lambda value: engine('radius', value),\n rng=[0.1, 1.5],\n value=0.5,\n title=\"Radius\",\n pointa=(0.67, 0.1),\n pointb=(0.98, 0.1),\n style='modern',\n)\np.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.2" } }, "nbformat": 4, "nbformat_minor": 0 }