当前位置: 首页 > news >正文

dash 中的模式匹配回调函数Pattern-Matching Callbacks 8

模式匹配

模式匹配回调选择器 MATCH、ALL 和 ALLSMALLER 允许您编写可以响应或更新任意或动态数量组件的回调函数。
此示例呈现任意数量的 dcc. Dropdown 元素,并且只要任何 dcc. Dropdown 元素发生更改,就会触发回调。尝试添加几个下拉菜单并选择它们的值,以查看应用程序如何更新。
效果:
在这里插入图片描述

代码

# 导入Dash库及其相关组件  
from dash import Dash, dcc, html, Input, Output, ALL, Patch, callback# 创建一个Dash应用实例  
app = Dash(__name__)# 设置应用的布局  
app.layout = html.Div([# 添加一个按钮,用于添加过滤器,id为"add-filter-btn",并设置初始点击数为0  html.Button("添加过滤器", id="add-filter-btn", n_clicks=0),# 创建一个div容器,用于存放下拉菜单组件,id为"dropdown-container-div",初始子元素为空  html.Div(id="dropdown-container-div", children=[]),# 创建一个div容器,用于显示下拉菜单的选择结果,id为"dropdown-container-output-div"  html.Div(id="dropdown-container-output-div"),]
)# 定义一个回调函数,当"add-filter-btn"按钮被点击时触发
@callback(# 设置输出目标为"dropdown-container-div"的子元素  Output("dropdown-container-div", "children"),# 设置输入源为"add-filter-btn"的点击事件  Input("add-filter-btn", "n_clicks")
)
def display_dropdowns(n_clicks):# 创建一个Patch对象,用于存放新的下拉菜单组件  patched_children = Patch()# 创建一个新的下拉菜单组件,包含四个城市选项,id根据点击次数动态生成  new_dropdown = dcc.Dropdown(["NYC", "MTL", "LA", "TOKYO"],id={"type": "city-filter-dropdown", "index": n_clicks},)# 将新的下拉菜单组件添加到Patch对象中  patched_children.append(new_dropdown)# 返回Patch对象,更新"dropdown-container-div"的子元素  return patched_children# 定义一个回调函数,当下拉菜单的值发生变化时触发
@callback(# 设置输出目标为"dropdown-container-output-div"的子元素  Output("dropdown-container-output-div", "children"),# 设置输入源为所有"city-filter-dropdown"类型的下拉菜单的值变化事件  Input({"type": "city-filter-dropdown", "index": ALL}, "value"),
)
def display_output(values):# 遍历所有下拉菜单的值,创建一个包含结果的div组件列表  return html.Div([html.Div(f"下拉菜单 {i + 1} = {value}") for (i, value) in enumerate(values)])# 当脚本作为主程序运行时,启动Dash应用,并开启调试模式
if __name__ == "__main__":app.run(debug=True)

上一篇

相关文章:

  • 【Web】vulhub-httpd apache解析漏洞复现(1)
  • 005、数据类型
  • 油猴脚本开发,之如何添加html和css
  • nodejs+vue+ElementUi农产品团购销售系统zto2c
  • 速盾cdn:cdn加速原理是什么
  • 【23.12.30期--Spring篇】Spring的AOP介绍(详解)
  • 前端axios与python库requests的区别
  • chrome扩展程序开发之在目标页面运行自己的JS
  • python常见报错信息!错误和异常!附带处理方法
  • Spring Cloud - Eureka原理、注册、搭建、应用(全过程详解)
  • flask文件夹列表改进版--Bug追踪
  • 2023年新一代开发者工具 Vue ,正式开源!
  • Power BI - 5分钟学习合并文件
  • 【前端面经】即时设计
  • 通过数字证书对PDF电子文件进行数字签名/盖章
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Babel配置的不完全指南
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • JavaScript设计模式之工厂模式
  • js中的正则表达式入门
  • Mysql5.6主从复制
  • Redux 中间件分析
  • 如何编写一个可升级的智能合约
  • 如何设计一个微型分布式架构?
  • 数据可视化之 Sankey 桑基图的实现
  • 项目实战-Api的解决方案
  • 用 Swift 编写面向协议的视图
  • 智能合约开发环境搭建及Hello World合约
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Spring Batch JSON 支持
  • #162 (Div. 2)
  • (33)STM32——485实验笔记
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)setTimeout 和 setInterval 的区别
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .net core控制台应用程序初识
  • .NET Project Open Day(2011.11.13)
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .NET学习全景图
  • .Net中间语言BeforeFieldInit
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数
  • [CareerCup][Google Interview] 实现一个具有get_min的Queue
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘
  • [E链表] lc83. 删除排序链表中的重复元素(单链表+模拟)
  • [js] 正则表达式
  • [kubernetes]控制平面ETCD
  • [Linux]进程信号(信号入门 | 信号产生的方式 | 信号捕捉初识)
  • [Linux]知识整理(持续更新)
  • [nlp] 损失缩放(Loss Scaling)loss sacle