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)

上一篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/310244.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP/IP的五层网络模型

目录 封装(打包快递) 6.1应用层 6.2传输层 6.3网络层 6.4数据链路层 6.5物理层 分用(拆快递) 6.5物理层 6.4数据链路层 6.3网络层 6.2传输层 6.1应用层 封装(打包快递) 6.1应用层 此时做的数据…

Android Studio配置国内镜像源和HTTP代理/解决:Android Studio下载gradle速度慢的问题

(方案一)Android Studio配置国内镜像源和HTTP代理 一、配置国内镜像源/依赖库 1.1 打开项目的setting.gradle.kts文件 配置进去 pluginManagement {repositories {maven { urluri ("https://www.jitpack.io")}maven { urluri ("https:…

【C语言】分支与循环语句

什么是语句? C语句可分为以下五类: 表达式语句函数调用语句控制语句 (本篇重点介绍)复合语句空语句 控制语句用于控制程序的执行流程,以实现程序的各种结构方式。C语言支持三种结构: 顺序结构选择结构循…

第一讲:BeanFactory和ApplicationContext

BeanFactory和ApplicationContext 什么是BeanFactory 它是ApplicationContext的父接口它才是Spring的核心容器,主要的ApplicationContext实现都组合了它的功能 BeanFactory能做什么? 表面上看BeanFactory的主要方法只有getBean(),实际上控制反转、基…

产品经理学习-策略产品指标

目录: 数据指标概述 通用指标介绍 Web端常用指标 移动端常用指标 如何选择一个合适的数据指标 数据指标概述 指标是衡量目标的一个参数,指一项活动中预期达到的指标、目标等,一般用数据表示,因此又称为数据指标;…

pytorch03:transforms常见数据增强操作

目录 一、数据增强二、transforms--Crop裁剪2.1 transforms.CenterCrop2.2 transforms.RandomCrop2.3 RandomResizedCrop2.4 FiveCrop和TenCrop 三、transforms—Flip翻转、旋转3.1RandomHorizontalFlip和RandomVerticalFlip3.2 RandomRotation 四、transforms —图像变换4.1 t…

Github项目推荐-vocal-separate

项目地址 vocal-separate: 项目简述 这是一个音乐和人声分离的项目,基于python开发。有图形化操作界面,看起来还不错。 项目截图

二叉树BFS

前置知识 二叉树节点的定义 二叉树是递归定义的 /*** Definition for a binary tree node.(LeetCode)*/public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode…

基本运算器实验静态随机存储器实验

1.1 基本运算器实验 1. 实验记录 ①运算结果 首先按照实验指导书进行连线,然后打开试验箱电源,把A,B两个数存到寄存器中,然后改变s3 s2 s1 s0 的值,产生脉冲,观察对应的数据总线上的值以及两个标志位。 …

微信小程序开发系列-09自定义组件样式特性

微信小程序开发系列目录 《微信小程序开发系列-01创建一个最小的小程序项目》《微信小程序开发系列-02注册小程序》《微信小程序开发系列-03全局配置中的“window”和“tabBar”》《微信小程序开发系列-04获取用户图像和昵称》《微信小程序开发系列-05登录小程序》《微信小程序…

【Unity入门】热更新框架之xLua

目录 一、xLua概述1.1xLua简介1.2xLua安装 二、Lua文件加载2.1执行字符串2.2加载Lua文件2.3自定义loader 三、xLua文件配置3.1打标签3.2静态列表3.3动态列表 四、Lua与C#交互4.1 C#访问Lua4.1.1 获取一个全局基本数据类型4.1.2 访问一个全局的table4.1.3 访问一个全局的functio…

Maven项目提示Ignored pom.xml问题

1 环境 (1)IDEA开发工具:2022.2.1 (2)JDK:Java17(Spring6要求JDK最低版本是Java17) (3)Spring:6.1.2 (4)Maven 3.8.8 2 …