チェックボックスウィジェット

チェックボックスウィジェット#

チェックボックスを使用して,シーン内のメッシュの表示/非表示を切り替えます.

詳細については, pyvista.Plotter.add_checkbox_button_widget() を参照してください.

import pyvista as pv

単一チェックボックス#

mesh = pv.Sphere()

p = pv.Plotter()
actor = p.add_mesh(mesh)


def toggle_vis(flag) -> None:
    actor.SetVisibility(flag)


p.add_checkbox_button_widget(toggle_vis, value=True)
p.show()
b checkbox widget

以下はユーザ対話型のスクリーンショットです

../../_images/single-checkbox-widget.gif

複数のチェックボックス#

この例では,一意のカラーを持つ多数のメッシュをシーンに追加し,同じカラーのメッシュに対応するチェックボックスを作成してシーン内での可視性を切り替えます.

colors = [
    ["ff0000", "28e5da", "0000ff"],
    ["ffff00", "c8bebe", "f79292"],
    ["fffff0", "f18c1d", "23dcaa"],
    ["d785ec", "9d5b13", "e4e0b1"],
    ["894509", "af45f5", "fff000"],
]


class SetVisibilityCallback:
    """Helper callback to keep a reference to the actor being modified."""

    def __init__(self, actor) -> None:
        self.actor = actor

    def __call__(self, state):
        self.actor.SetVisibility(state)
# Widget size
size = 50

p = pv.Plotter()

Startpos = 12
for i, lst in enumerate(colors):
    for j, color in enumerate(lst):
        actor = p.add_mesh(pv.Sphere(center=(i, j, 0)), color=color)
        # Make a separate callback for each widget
        callback = SetVisibilityCallback(actor)
        p.add_checkbox_button_widget(
            callback,
            value=True,
            position=(5.0, Startpos),
            size=size,
            border_size=1,
            color_on=color,
            color_off="grey",
            background_color="grey",
        )
        Startpos = Startpos + size + (size // 10)

p.show()
b checkbox widget

以下はユーザ対話型のスクリーンショットです

../../_images/multiple-checkbox-widget.gif
Open In Colab

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

Sphinx-Galleryによるギャラリー