Dash is a web application framework that provides pure Python abstraction
around HTML, CSS, and JavaScript.
Dash DAQ comprises a robust set of controls that make it simpler to
integrate data acquisition and controls into your Dash applications.
The source is on GitHub at plotly/dash-daq.
These docs are using version 0.5.0.
>>> import dash_daq as daq
>>> print(daq.__version__)
0.5.0
from dash import Dash, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.BooleanSwitch(id='our-boolean-switch', on=False),
html.Div(id='boolean-switch-result')
])
@callback(
Output('boolean-switch-result', 'children'),
Input('our-boolean-switch', 'on')
)
def update_output(on):
return f'The switch is {on}.'
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.ColorPicker(
id='our-color-picker',
label='Color Picker',
value=dict(hex='#119DFF')
),
html.Div(id='color-picker-result')
])
@callback(
Output('color-picker-result', 'children'),
Input('our-color-picker', 'value')
)
def update_output(value):
return f'The selected color is {value}.'
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, dcc, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.Gauge(
id='our-gauge',
label="Default",
value=6
),
dcc.Slider(
id='our-gauge-slider',
min=0,
max=10,
step=1,
value=5
),
])
@callback(Output('our-gauge', 'value'), Input('our-gauge-slider', 'value'))
def update_output(value):
return value
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, dcc, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.GraduatedBar(
id='our-graduated-bar',
label="Default",
value=6
),
dcc.Slider(
id='our-graduated-bar-slider',
min=0,
max=10,
step=1,
value=5
),
])
@callback(
Output('our-graduated-bar', 'value'),
Input('our-graduated-bar-slider', 'value')
)
def update_output(value):
return value
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.Indicator(
id='our-indicator',
label="Default",
),
html.Button(
'On/Off',
id='our-indicator-button',
n_clicks=0
),
])
@callback(
Output('our-indicator', 'value'),
Input('our-indicator-button', 'n_clicks')
)
def update_output(value):
return True if value % 2 == 0 else False
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.Joystick(
id='our-joystick',
label="Default",
angle=0
),
html.Div(id='joystick-result')
])
@callback(
Output('joystick-result', 'children'),
Input('our-joystick', 'angle'),
Input('our-joystick', 'force')
)
def update_output(angle, force):
return [f'Angle is {angle}', html.Br(), f'Force is {force}']
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.Knob(id='our-knob'),
html.Div(id='knob-result')
])
@callback(Output('knob-result', 'children'), Input('our-knob', 'value'))
def update_output(value):
return f'The knob value is {value}.'
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, dcc, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.LEDDisplay(
id='our-LED-display',
label="Default",
value=6
),
dcc.Slider(
id='our-LED-display-slider',
min=0,
max=10,
step=1,
value=5
),
])
@callback(
Output('our-LED-display', 'value'),
Input('our-LED-display-slider', 'value')
)
def update_output(value):
return str(value)
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.NumericInput(
id='our-numeric-input',
value=0
),
html.Div(id='numeric-input-result')
])
@callback(
Output('numeric-input-result', 'children'),
Input('our-numeric-input', 'value')
)
def update_output(value):
return f'The value is {value}.'
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.PowerButton(
id='our-power-button',
on=False
),
html.Div(id='power-button-result')
])
@callback(
Output('power-button-result', 'children'),
Input('our-power-button', 'on')
)
def update_output(on):
return f'The button is {on}.'
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.PrecisionInput(
id='our-precision',
label='Default',
precision=4,
value=1234
),
html.Div(id='precision-result')
])
@callback(
Output('precision-result', 'children'),
Input('our-precision', 'value')
)
def update_output(value):
return f'The current value is {value}.'
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.Slider(
id='our-daq-slider-ex',
value=17
),
html.Div(id='slider-result')
])
@callback(
Output('slider-result', 'children'),
Input('our-daq-slider-ex', 'value')
)
def update_output(value):
return f'The slider is currently at {value}.'
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.StopButton(
id='our-stop-button',
label='Default',
n_clicks=0
),
html.Div(id='stop-button-result')
])
@callback(
Output('stop-button-result', 'children'),
Input('our-stop-button', 'n_clicks')
)
def update_output(n_clicks):
return f'The stop button has been clicked {n_clicks} times.'
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, dcc, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.Tank(
id='our-tank',
value=5,
min=0,
max=10,
style={'margin-left': '50px'}
),
dcc.Slider(
id='tank-slider',
value=5,
min=0,
max=10,
),
])
@callback(Output('our-tank', 'value'), Input('tank-slider', 'value'))
def update_tank(value):
return value
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, dcc, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.Thermometer(
id='our-thermometer',
value=5,
min=0,
max=10,
style={
'margin-bottom': '5%'
}
),
dcc.Slider(
id='thermometer-slider',
value=5,
min=0,
max=10,
),
])
@callback(
Output('our-thermometer', 'value'),
Input('thermometer-slider', 'value')
)
def update_thermometer(value):
return value
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, Input, Output, callback
import dash_daq as daq
app = Dash()
app.layout = html.Div([
daq.ToggleSwitch(
id='our-toggle-switch',
value=False
),
html.Div(id='toggle-switch-result')
])
@callback(
Output('toggle-switch-result', 'children'),
Input('our-toggle-switch', 'value')
)
def update_output(value):
return f'The switch is {value}.'
if __name__ == '__main__':
app.run(debug=True)
**
from dash import Dash, html, Input, Output, State, callback
import dash_daq as daq
app = Dash()
theme = {
'dark': True,
'detail': '#007439',
'primary': '#00EA64',
'secondary': '#6E6E6E',
}
rootLayout = html.Div([
daq.BooleanSwitch(
on=True,
className='dark-theme-control'
), html.Br(),
daq.ToggleSwitch(
className='dark-theme-control'
), html.Br(),
daq.ColorPicker(
value=dict(hex='#171717'),
className='dark-theme-control'
), html.Br(),
daq.Gauge(
min=0,
max=10,
value=6,
color=theme['primary'],
className='dark-theme-control'
), html.Br(),
daq.GraduatedBar(
value=4,
color=theme['primary'],
className='dark-theme-control'
), html.Br(),
daq.Indicator(
value=True,
color=theme['primary'],
className='dark-theme-control'
), html.Br(),
daq.Knob(
min=0,
max=10,
value=6,
className='dark-theme-control'
), html.Br(),
daq.LEDDisplay(
value="3.14159",
color=theme['primary'],
className='dark-theme-control'
), html.Br(),
daq.NumericInput(
min=0,
max=10,
value=4,
className='dark-theme-control'
), html.Br(),
daq.PowerButton(
on=True,
color=theme['primary'],
className='dark-theme-control'
), html.Br(),
daq.PrecisionInput(
precision=4,
value=299792458,
className='dark-theme-control'
), html.Br(),
daq.StopButton(
className='dark-theme-control'
), html.Br(),
daq.Slider(
min=0,
max=100,
value=30,
targets={"25": {"label": "TARGET"}},
color=theme['primary'],
className='dark-theme-control'
), html.Br(),
daq.Tank(
min=0,
max=10,
value=5,
className='dark-theme-control'
), html.Br(),
daq.Thermometer(
min=95,
max=105,
value=98.6,
className='dark-theme-control'
), html.Br()
])
app.layout = html.Div([
daq.ToggleSwitch(
id='toggle-dark',
label=['Light', 'Dark'],
value=True
),
html.Br(),
html.Div([
daq.ColorPicker(
id='color-primary',
label='Primary color',
value=dict(hex='#00EA64')
),
daq.ColorPicker(
id='color-secondary',
label='Accent color',
value=dict(hex='#6E6E6E')
),
daq.ColorPicker(
id='color-detail',
label='Detail color',
value=dict(hex='#007439')
)
]),
html.Div(id='dark-theme-components', children=[
daq.DarkThemeProvider(theme=theme, children=rootLayout)
], style={
'border': 'solid 1px #A2B1C6',
'border-radius': '5px',
'padding': '50px',
'marginTop': '20px'
})
], style={'padding': '50px'})
@callback(
Output('dark-theme-components', 'children'),
Input('toggle-dark', 'value'),
Input('color-primary', 'value'),
Input('color-secondary', 'value'),
Input('color-detail', 'value')
)
def edit_theme(dark, p, s, d):
if(dark):
theme.update(dark=True)
else:
theme.update(dark=False)
if p is not None:
theme.update(primary=p['hex'])
for child in getattr(rootLayout, 'children'):
if hasattr(child, 'color'):
setattr(child, 'color', p['hex'])
if s is not None:
theme.update(secondary=s['hex'])
if d is not None:
theme.update(detail=d['hex'])
return daq.DarkThemeProvider(theme=theme, children=rootLayout)
@callback(
Output('dark-theme-components', 'style'),
Input('toggle-dark', 'value'),
State('dark-theme-components', 'style')
)
def switch_bg(dark, currentStyle):
if(dark):
currentStyle.update(backgroundColor='#303030')
else:
currentStyle.update(backgroundColor='white')
return currentStyle
if __name__ == '__main__':
app.run(debug=True)
**