You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dash Python点击图表更新html.Video源回调报错如何解决

问题解决方案

核心错误原因

  • 回调函数参数数量与输入项数量不匹配:你注册的回调仅传入1个Input(hist的clickData),但updateVideo函数定义了2个入参clk_data、src,参数数量不一致直接触发回调运行报错。
  • 次要问题:布局中html.Video的初始src赋值为空字典{},不符合该属性要求的字符串类型格式,可能引发初始渲染异常。

修复代码

第一步:修正回调参数

直接删除函数中多余的src参数即可:

@app.callback (
    Output('video_player', 'src'),
    [Input('hist', 'clickData')]
)
def updateVideo(clk_data):
    if clk_data is None:
        video_src = "https://www.w3schools.com/html/mov_bbb.mp4"
    else:
        print(f'click data: {clk_data}')
        video_src = "http://techslides.com/demos/sample-videos/small.webm"
    return video_src

第二步:修正初始src赋值(可选但推荐)

将布局中html.Video的初始src改为空字符串或默认视频地址:

html.Video(
    controls=True,
    id='video_player',
    src="", # 替换原有的空字典{}
    autoPlay=False,
    style={'width': "70%"}
),

优化方案(解决视频缓存不刷新问题)

如果修复后出现src变更但视频未刷新的情况,是浏览器缓存导致的,可通过新增key属性强制组件重新渲染:

  1. 布局中给html.Video新增key属性:
html.Video(
    controls=True,
    id='video_player',
    src="",
    key="", # 新增key属性
    autoPlay=False,
    style={'width': "70%"}
),
  1. 回调同时输出src和key:
@app.callback (
    [Output('video_player', 'src'),
     Output('video_player', 'key')],
    [Input('hist', 'clickData')]
)
def updateVideo(clk_data):
    if clk_data is None:
        video_src = "https://www.w3schools.com/html/mov_bbb.mp4"
    else:
        print(f'click data: {clk_data}')
        video_src = "http://techslides.com/demos/sample-videos/small.webm"
    return video_src, video_src

内容的提问来源于stack exchange,提问作者Totes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:36:05