【Dash】Dash中@callback() 回调函数的Output() 参数

2024-08-21 10:12

本文主要是介绍【Dash】Dash中@callback() 回调函数的Output() 参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、Dash 中的 @callback()

在Python中,@callback是一个用于注册回调函数的装饰器

Dash 的回调机制允许开发者创建交互式的Web应用,通过回调函数可以实现前端界面与后端逻辑的交互。

二、@callback() 的概念、定义和应用场景

概念

  • @callback 是 Dash 框架中的一个装饰器,用于将一个普通函数转变成一个回调函数,这个函数可以响应 Dash 应用中的用户交互。

定义

  • @callback 常与 Output 和 Input 类一起使用,定义了当输入组件的值发生变化时,哪个前端组件应该更新,以及如何更新。

应用场景

  • 需要根据用户输入、点击等交互更新前端显示的情况时使用。
  • 例如,当用户调整滑块时更新图表,或者在用户输入文本后显示结果。

三、@callback() 中 的常用类

  • Input():用于指定触发回调的组件和属性。例如:Input('component-id', 'property') 表示当指定组件的属性发生变化时,回调函数将被触发。
  • Output():用于指定回调函数的结果将更新到哪个组件的哪个属性。例如:Output('component-id', 'property') 表示回调函数的返回值将用来更新指定组件的属性。
  • State():用于在回调函数中提供额外的输入值,但它本身的变化不会触发回调。这个可以用于传递组件的当前状态,而不需要更新触发回调函数。

四、@callback() 中的 Output() 有哪些参数?

1、'children'

  • 用于更新组件的子元素。这通常用于容器组件,如 html.Div html.Ul,你可以用它来动态添加或修改内部的 HTML 元素。
import dash
from dash import html
from dash.dependencies import Input, Outputapp = dash.Dash(__name__)app.layout = html.Div([html.Button('Add Test', id='add-text-button', n_clicks=0),html.Div(id='text-container')
])@app.callback(Output('text-container', 'children'),[Input('add-text-button', 'n_clicks')]
)
def add_text(n_clicks):if n_clicks:return [html.P(f'This is text {i}') for i in range(n_clicks)]if __name__ == '__main__':app.run_server(debug=True)

2、'figure'

  • 用于更新图表组件的内容,如 dcc.Graph。这个属性允许你传递图表的数据和配置,Dash 会自动更新图表的显示。
import dash
from dash import dcc, html
from dash.dependencies import Input, Output
import plotly.express as pxapp = dash.Dash(__name__)# 定义应用布局
app.layout = html.Div([# 添加 dcc.Location 组件来捕获 URL 的路径dcc.Location(id='url', refresh=False),# 定义一个 Graph 组件来显示图表dcc.Graph(id='example-graph')
])# 回调函数,根据 URL 路径更新图表
@app.callback(Output('example-graph', 'figure'),[Input('url', 'pathname')]
)
def update_graph(pathname):# 获取鸢尾花数据集df = px.data.iris()# 根据 pathname 来决定图表的数据和类型if pathname:# 假设 pathname 是 'sepal_length', 'sepal_widdth', 'petal_length', 'petal_width' 中的一个# 去除 pathname 前后的斜杠column_name = pathname.strip('/')if column_name in df.columns:fig = px.box(df, y=column_name)return fig# 如果 pathname 不匹配任何列,返回一个空的图表column_list = 'url可拼接:' + ','.join(df.columns)return {'data': [],'layout': {'title': f'No Data<br>{column_list}'}}        # 返回空图表# 运行服务器
if __name__ == '__main__':app.run_server(debug=True)

3、'style'

  • 用于更新组件的 CSS 样式。你可以指定样式字典来改变组件的外观。
import dash
from dash import html
from dash.dependencies import Input, Outputapp = dash.Dash(__name__)app.layout = html.Button('Change Style', id='change-style-button', n_clicks=0)@app.callback(Output('change-style-button', 'style'),[Input('change-style-button', 'n_clicks')]
)
def change_style(n_clicks):if n_clicks % 2 == 1:return {'color': 'white', 'background-color': 'blue'}else:return {'color': 'black', 'background-color': 'lightgray'}if __name__ == '__main__':app.run_server(debug=True)

4、'className'

  • 用于更新组件的 CSS 类名。这可以用于应用预定义的 CSS 样式或 JavaScript 插件。
import dash
from dash import html
from dash.dependencies import Input, Outputapp = dash.Dash(__name__)app.layout = html.Div([html.Button('Change Class', id='change-class-button', n_clicks=0),html.Div('Content', id='content-div'),html.Div(id='class-name-display')
])@app.callback(Output('content-div', 'className'),[Input('change-class-button', 'n_clicks')]
)
def change_class(n_clicks):if n_clicks % 2 == 0:return 'new-class-a'else:return 'new-class-b'@app.callback(Output('class-name-display', 'children'),[Input('content-div', 'className')]
)
def display_class_name(className):return f'The current class name is: {className}'if __name__ == '__main__':app.run_server(debug=True)

 

5、'value'

  • 用于更新输入组件的值,如 dcc.Input dcc.Dropdown
import dash
from dash import dcc, html
from dash.dependencies import Input, Outputapp = dash.Dash(__name__)app.layout = html.Div([dcc.Location(id='url', refresh=False),dcc.Input(id='input-field', value='Initial Value')
])@app.callback(Output('input-field', 'value'),[Input('url', 'pathname')]
)
def update_input_value(pathname):return pathname if pathname else 'No Path Provided'if __name__ == '__main__':app.run_server(debug=True)

 

6、'options'

  • 用于更新下拉列表组件的选项,如 dcc.Dropdown
import dash
from dash import dcc, html
from dash.dependencies import Input, Outputapp = dash.Dash(__name__)app.layout = html.Div([dcc.Location(id='url', refresh=False),dcc.Dropdown(id='my-dropdown')
])@app.callback(Output('my-dropdown', 'options'),[Input('url', 'pathname')]
)
def update_dropdown_options(pathname):if pathname:options = [{'label': f'Option {i}', 'value': f'{i}'} for i in range(1,6)]return optionsif __name__ == '__main__':app.run_server(debug=True)

 

7、'active'

  • 用于更新选项卡或手风琴组件的当前活动项,如 dcc.Tabs dcc.Accordion

8、'selectedData'

  • 用于更新图表组件选中的数据点,如 dcc.Graph

9、'src'

  • 用于更新图片或视频组件的源,如 html.Img html.Video

10、'data'

  • 用于更新图表或数据表组件的数据,如 dcc.Graph dash_table.DataTable

11、'columns'

  • 用于更新数据表组件的列配置,如 dash_table.DataTable

这篇关于【Dash】Dash中@callback() 回调函数的Output() 参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092870

相关文章

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

PyTorch中cdist和sum函数使用示例详解

《PyTorch中cdist和sum函数使用示例详解》torch.cdist是PyTorch中用于计算**两个张量之间的成对距离(pairwisedistance)**的函数,常用于点云处理、图神经网... 目录基本语法输出示例1. 简单的 2D 欧几里得距离2. 批量形式(3D Tensor)3. 使用不

MySQL 字符串截取函数及用法详解

《MySQL字符串截取函数及用法详解》在MySQL中,字符串截取是常见的操作,主要用于从字符串中提取特定部分,MySQL提供了多种函数来实现这一功能,包括LEFT()、RIGHT()、SUBST... 目录mysql 字符串截取函数详解RIGHT(str, length):从右侧截取指定长度的字符SUBST

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL