前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于Python可视化Dash工具-回调

关于Python可视化Dash工具-回调

作者头像
python与大数据分析
发布2022-03-11 14:09:13
6320
发布2022-03-11 14:09:13
举报
文章被收录于专栏:python与大数据分析

Dash中的「回调」(callback)是以装饰器的形式,配合自编回调函数,实现前后端异步通信交互。

回调可以实现单一输入,单一输出;单一输入,多个输出;多个输入,多个输出;单一/多个输入,单一/多个输出,只要参数名称不一样就行。

回调比较方便协同前后端的异步交互。

代码语言:javascript
复制
province2city_dict = {
    '四川省': '成都市',
    '陕西省': '西安市',
    '广东省': '广州市'
}
flowertype_dict = {
    'setosa': '1',
    'versicolor': '2',
    'virginnica': '3'
}

app.layout=html.Div([html.Div('Div logo', id='logo'),
                     html.Div('Div header', id='header'),
                     html.Div([
                         html.Div([
                             html.Div('Div left-top', id='left-top'),
                             html.Div('Div left-middle', id='left-middle'),
                             html.Div('Div left-bottom', id='left-bottom'),
                         ], id='mleft'),
                         html.Div([
                             html.H1('根据省名查询省会城市:'),
                             html.Br(),
                             dcc.Dropdown(id='province',
                                          options=[{'label':'四川省','value':'四川省'},
                                                   {'label':'陕西省','value':'陕西省'},
                                                   {'label':'广东省','value':'广东省'}],
                                          value='四川省'),
                             html.P(id='city'),
                             html.Div([
                                 html.Label('Gender'),
                                 html.Div([
                                     dcc.Dropdown(   # 功能性组件, 设定id值作为标签关联callback函数中的标签
                                            id='gender',
                                            options=[{'label': i, 'value': i} for i in ['女人', '男人']],
                                            value='女人'),
                                    ]),
                                 html.P('测试多个输入单个输出:',id='multinputsimpleoutput'),
                                 html.P('测试多个输入单个输出,相同输入变量输出不同变量:',id='multinputsimpleoutput2'),
                                 html.Label('flower type'),
                                 html.Div([
                                     dcc.Dropdown(
                                            id='flowertype',
                                            # options=[{'label':'setosa','value':'1'},
                                            #          {'label':'versicolor','value':'2'},
                                            #          {'label':'virginnica','value':'3'}],
                                            options=[{'label': key, 'value': value} for (key,value) in flowertype_dict.items()],
                                            value='1'),
                                    ]),
                                ], className="dropdown"),
                             html.P('测试多个输入多个输出1:',id='multinputmultoutput1'),
                             html.P('测试多个输入多个输出2:',id='multinputmultoutput2')
                         ], id='mmap'),
                         html.Div('mright',id='mright')
                     ],id='main'),
                     html.Div('Div footer', id='footer')]
                    ,id='container')
# 单一输入,单一输出
@app.callback(Output('city','children'),Input('province','value'))
def province2city(province):
    return province2city_dict[province]

# 多个输入,单一输出
@app.callback(Output('multinputsimpleoutput','children'),[Input('province','value'),Input('gender','value')])
def province2city(province,gender):
    return province2city_dict[province]+'   '+gender

# 多个输入,单一输出,允许相同输入参数,返回不同输出参数;相同输出参数会报错
@app.callback(Output('multinputsimpleoutput2','children'),[Input('province','value'),Input('gender','value')])
def province2city(province,gender):
return province2city_dict[province]+'   '+gender+'  返回到不同参数'

# 多个输入,多个输出
@app.callback([Output('multinputmultoutput1','children'),Output('multinputmultoutput2','children')],[Input('province','value'),Input('gender','value'),Input('flowertype','value')])
def province2city(province,gender,flowertype):
    flowtypename=list(flowertype_dict.keys())[list(flowertype_dict.values()).index(flowertype)]
    return province2city_dict[province]+'   '+gender,flowtypename
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python与大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档