Skip to article frontmatterSkip to article content

Using Widgets

Directly in JupyterLite

%pip install ipywidgets
import ipywidgets as widgets
from IPython.display import display
import numpy as np
import matplotlib.pyplot as plt
cookiesSlider = widgets.IntSlider(min=0, max=30, step=1, value=10, description="Cookies: ")
cookiesText = widgets.BoundedIntText(
    value=10,
    min=0,
    max=30,
    step=1,
)
widgetLink = widgets.jslink((cookiesSlider, 'value'), (cookiesText, 'value'))

caloriesPerCookie = 50
dailyCalories = 2100.

cookies = widgets.Label(value=f'{cookiesSlider.value}')
calories = widgets.Label(value=f'{cookiesSlider.value * caloriesPerCookie}')
def fc(n):
    cookies.value = f'{n["owner"].value}'
    calories.value = f'{n["owner"].value * caloriesPerCookie}'
cookiesSlider.observe(fc)


percent = widgets.Label(value=f'{cookiesSlider.value * caloriesPerCookie / dailyCalories:.1%}')
def fp(n):
    percent.value = f'{n["owner"].value * caloriesPerCookie / dailyCalories:.1%}'
cookiesSlider.observe(fp)
display(cookiesSlider, percent)
Loading...
def plot(freq=1., color='blue', lw=2, grid=True):
    t = np.linspace(-1., +1., 1000)
    fig, ax = plt.subplots(1, 1, figsize=(8, 6))
    ax.plot(t, np.sin(2 * np.pi * freq * t),
            lw=lw, color=color)
    ax.grid(grid)
    plt.show()

freq = widgets.FloatSlider(min=0.1, max=5.0, step=0.5, value=1, description="Frequency: ")
w = widgets.interactive(plot, freq=freq, color=['blue', 'red', 'green'], lw=(1., 10.))
display(w)
Loading...