Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
viser
logo logo
Version: main
Github

Examples

  • Getting Started
    • Hello world
    • Core concepts
  • Scene Visualization
    • Coordinate frames
    • Point cloud visualization
    • 3D mesh visualization
    • Line visualization
    • Image overlays
    • Batched mesh rendering
    • Lighting and shadows
    • Depth compositing
    • Set up direction
    • Gaussian splats
  • GUI Controls
    • Basic GUI controls
    • GUI callbacks
    • GUI layouts
    • Markdown support
    • Modal dialogs
    • Theming
    • 3D GUI elements
    • Notifications
    • Plotly integration
    • uPlot integration
    • Plots as images
  • User Interaction
    • Mesh click events
    • Scene pointer events
    • Get renders
    • Camera pose tracking
    • Programmatic camera control
  • Demos
    • Record3D
    • COLMAP
    • URDF robot visualizer
    • SMPL human model
    • SMPL skinned mesh
    • Games

API Reference

  • Core API
    • Viser Server
    • Scene API
    • GUI API
  • Handles API
    • Client Handles
    • Camera Handles
    • GUI Handles
    • Scene Handles
  • Advanced API
    • Events
    • Icons
    • Theme Configuration
    • uPlot Types
    • State Serializer
  • Auxiliary API
    • Transforms
    • Communication
    • Record3D + URDF Helpers

Notes

  • Frame Conventions
  • Development
  • Embedding Visualizations
Back to top
View this page

Modal dialogs¶

Create popup modal dialogs for user input, confirmations, or detailed information display.

Features:

  • viser.GuiApi.add_modal() for creating modal dialogs

  • Dynamic modal content with markdown and controls

  • Modal title updates and content management

  • Context managers for automatic modal handling

Source: examples/02_gui/04_modals.py

Modal dialogs

Code¶

 1import time
 2
 3import viser
 4
 5
 6def main():
 7    server = viser.ViserServer()
 8
 9    @server.on_client_connect
10    def _(client: viser.ClientHandle) -> None:
11        with client.gui.add_modal("Modal example"):
12            client.gui.add_markdown(
13                "**The input below determines the title of the modal...**"
14            )
15
16            gui_title = client.gui.add_text(
17                "Title",
18                initial_value="My Modal",
19            )
20
21            modal_button = client.gui.add_button("Show more modals")
22
23            @modal_button.on_click
24            def _(_) -> None:
25                with client.gui.add_modal(gui_title.value) as modal:
26                    client.gui.add_markdown("This is content inside the modal!")
27                    client.gui.add_button("Close").on_click(lambda _: modal.close())
28
29    while True:
30        time.sleep(0.15)
31
32
33if __name__ == "__main__":
34    main()
Next
Theming
Previous
Markdown support
Copyright © 2024
Made with Sphinx and @pradyunsg's Furo
On this page
  • Modal dialogs
    • Code