Dash 组件中的用户输入

使用 Dash 和 Plotly 构建仪表板

Alex Scriven

Data Scientist

为何需要用户输入?

 

用户输入的常见用法:

  • 跨大范围数值过滤(number 输入)
    • 想象一个含 2000 个年份的下拉框!
  • 基于文本匹配过滤(searchtext
  • 创建登录(passwordemail/text
使用 Dash 和 Plotly 构建仪表板

Dash 中的用户输入

 

用户输入是 Dash Core Components 的 Input 类型(dcc.Input

  • 为回调集成,必须提供 id
  • type 默认为 text
  • placeholder 显示淡化的引导文本

一个小矩形框,黑色边框,内部淡灰色文字"Enter your text"

 

dcc.Input(
    id='my_input',
    type='text',
    placeholder="Enter your text")
使用 Dash 和 Plotly 构建仪表板

使用输入

 

  • 输入会变成一个 Python 变量
  • 与回调配合使用

 

# @callback()
def update_plot(entered_data):
    fig = px.scatter(
    data_frame=sales, 
    y='OrderValue', x='Quantity',
    , title=f'{entered_data}')
    return fig
使用 Dash 和 Plotly 构建仪表板

用户输入类型

 

  • 基础类型:'text''number''password''email'
  • 更专用:
    • 'range' 生成范围滑块
    • 'tel''url' 用于电话号码与网站 URL
  • 进阶:
    • 'search''hidden' 涉及高级浏览器交互
使用 Dash 和 Plotly 构建仪表板

限制用户输入

 

type 参数会自动设置一些限制。

dcc.Input(
    id='my_input',
    type='email',
    placeholder="Enter your email")

   

一个输入框的动图:输入"some-text",鼠标离开后外框变红提示错误。随后重新进入并在末尾补上"@gmail.com",再次离开时不报错

使用 Dash 和 Plotly 构建仪表板

更多限制

  • number 类型仅允许数字
    • 另有:minmax 设定数值范围
    • text 输入可用 minLength / maxLength
  • text 类型还可用 pattern 做正则校验

   

一个带上下微调键的小输入框动图:点击得到 1,再变为 0。输入 249 无提示;输入 251 时外框变红提示错误。

dcc.Input(
    id='my_input',
    type='number',
    max=250)
使用 Dash 和 Plotly 构建仪表板

切换输入状态

 

  • disabled 以编程方式禁用输入

   

   

  • required 强制必须填写

$$

  • dcc.Input() 的布尔参数(True/False)

 

一个长方形输入框的动图:鼠标尝试点击但无法聚焦。框内文字为"已禁用的输入"。

dcc.Input(id='my_input', disabled=True)

一个长方形输入框的动图:鼠标点击进入又离开,未输入文本。离开后外框变红提示错误。框内文字为"必填输入"。

dcc.Input(id='my_input', required=True)
使用 Dash 和 Plotly 构建仪表板

何时更新

 

$$

dcc.Input(id='my_input', type='text',
          debounce=False)

$$

  • 逐步过滤:RReRedRedd

一个文本输入框动图,提示语为"Filter Product Descriptions"。逐字输入 R-E-D-D,下面图表随之逐步减少数据;全部输入后无数据可用,表示无描述包含"redd"。

使用 Dash 和 Plotly 构建仪表板

¡Vamos a practicar!

使用 Dash 和 Plotly 构建仪表板

Preparing Video For Download...