.. note::
    :class: sphx-glr-download-link-note

    Click :ref:`here <sphx_glr_download_auto_tutorials_02_ui_viz_radio_buttons.py>` to download the full example code
.. rst-class:: sphx-glr-example-title

.. _sphx_glr_auto_tutorials_02_ui_viz_radio_buttons.py:


========================================
Sphere Color Control using Radio Buttons
========================================

This example shows how to use the UI API. We will demonstrate how to
create a Sphere and control its color using radio buttons.

First, some imports.


.. code-block:: default


    from fury import ui, window, actor, utils
    import numpy as np







Sphere and Radio Buttons
========================

Add a Sphere to the scene.


.. code-block:: default


    sphere = actor.sphere(centers=np.array([[50, 0, 0]]),
                          colors=np.array([[0, 0, 1]]),
                          radii=11.0, theta=360, phi=360)

    # Creating a dict of possible options and mapping it with their values.
    options = {'Blue': (0, 0, 255), 'Red': (255, 0, 0), 'Green': (0, 255, 0)}

    color_toggler = ui.RadioButton(list(options), checked_labels=['Blue'],
                                   padding=1, font_size=16,
                                   font_family='Arial', position=(200, 200))


    # A callback which will set the values for the box
    def toggle_color(radio):
        vcolors = utils.colors_from_actor(sphere)
        color = options[radio.checked_labels[0]]
        vcolors[:] = np.array(color)
        utils.update_actor(sphere)


    color_toggler.on_change = toggle_color








Show Manager
============

Now that all the elements have been initialised, we add them to the show
manager.


.. code-block:: default


    current_size = (800, 800)
    show_manager = window.ShowManager(size=current_size,
                                      title="FURY Sphere Example")

    show_manager.scene.add(sphere)
    show_manager.scene.add(color_toggler)







Set camera for better visualization


.. code-block:: default


    show_manager.scene.reset_camera()
    show_manager.scene.set_camera(position=(0, 0, 150))
    show_manager.scene.reset_clipping_range()
    show_manager.scene.azimuth(30)
    interactive = False

    if interactive:
        show_manager.start()

    window.record(show_manager.scene,
                  size=current_size, out_path="viz_radio_buttons.png")



.. image:: /auto_tutorials/02_ui/images/sphx_glr_viz_radio_buttons_001.png
    :class: sphx-glr-single-img





.. rst-class:: sphx-glr-timing

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


.. _sphx_glr_download_auto_tutorials_02_ui_viz_radio_buttons.py:


.. only :: html

 .. container:: sphx-glr-footer
    :class: sphx-glr-footer-example



  .. container:: sphx-glr-download

     :download:`Download Python source code: viz_radio_buttons.py <viz_radio_buttons.py>`



  .. container:: sphx-glr-download

     :download:`Download Jupyter notebook: viz_radio_buttons.ipynb <viz_radio_buttons.ipynb>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_