Dash初探:如何将Label和Dropdown放在一行

news2024/12/22 16:04:34

Use Dash! How to display html.Lable and dcc.Dropdown on the same line?

1、目标

下图展示了我想要实现的效果。
在这里插入图片描述
数据筛选部分包含了三个筛选条件:日期区间选择器;区域选择器;地市选择器。其中,地市选择器的取值和已选区域是对应的,如果选择的是全省,则关闭地市选择器。

红框中的内容所打印的输出旨在模拟后端处理函数已经捕获了筛选的内容。

2、代码

首先贴出全部的代码:

# Dash == 2.6.1
import datetime
from dash import Dash, html, dcc, Input, Output, State


app = Dash(__name__)
app.layout = html.Div([
    html.H1(
        children='数据看板',
        style={
            'textAlign': 'center',
        }
    ),
    html.Div(
        children=[
            html.H2(
                    children='数据筛选',
                    style={
                        'padding-left': '45px',
                    }
                ),
            html.Div(className='my-label',
                     children=[html.Label('选择日期:', style={'padding-right': '5px'}),
                               dcc.DatePickerRange(
                                    id='date-picker-range-3',
                                    start_date='2022-12-10',
                                    end_date='2022-12-20',
                                    min_date_allowed=(datetime.datetime.now() + datetime.timedelta(1)).strftime('%Y-%m-%d'),
                                    max_date_allowed=(datetime.datetime.now() + datetime.timedelta(29)).strftime('%Y-%m-%d'),
                                    display_format='YYYY-MM-DD',
                                    updatemode='bothdates',
                                    first_day_of_week=1,
                                    minimum_nights=0,
                              ),
                               html.Label(
                                  children=[
                                      html.Label('选择区域:',
                                                 style={'padding-left': '20px',
                                                        'padding-right': '5px'}),
                                      dcc.Dropdown(options=['全省', '晋北', '晋中', '晋南'],
                                                   id='area-dp',
                                                   value='全省', clearable=False,
                                                   style={'width': '100px',
                                                          'display': 'inline-table'})],
                              ),
                               html.Label(
                                   children=[
                                       html.Label('选择地市:',
                                                  style={'padding-left': '20px',
                                                         'padding-right': '5px'}),
                                       dcc.Dropdown(
                                                    id='city-dp',
                                                    value='all',
                                                    clearable=False,
                                                    style={'width': '100px',
                                                           'display': 'inline-table'})
                                   ]
                               ),
                               html.Button('确定',
                                           id='confirm-btn',
                                           style={'height': '30px',
                                                  'margin-left': '50px',
                                                  'font-size': '15px',
                                                  'background-color': '#439DF8',
                                                  'color': 'white'})
                     ]),
            html.Label('全省城市', id='output', className='my-label')
        ]
    ),
])


@app.callback(
    Output('city-dp', 'options'),
    Output('city-dp', 'value'),
    Output('city-dp', 'disabled'),
    Input('area-dp', 'value')
)
def update_city_dp(value):
    area_2_cities = {
        '晋北': ['大同', '朔州', '忻州'],
        '晋中': ['吕梁', '太原', '晋中', '阳泉'],
        '晋南': ['临汾', '长治', '运城', '晋城']
    }
    if area_2_cities.get(value):
        return ['all'] + area_2_cities[value], 'all', False
    else:
        return [], '', True


@app.callback(
    Output('output', 'children'),
    Input('confirm-btn', 'n_clicks'),
    State('area-dp', 'value'),
    State('city-dp', 'value'),
    State('date-picker-range-3', 'start_date'),
    State('date-picker-range-3', 'end_date'),
)
def make_output(n_clicks, area='全省', city='all', start_date='2022-12-10', end_date='2022-12-20'):
    return '下拉选项内容:' + area + city + ';日期区间:' + start_date + '~' + end_date


if __name__ == '__main__':
    app.run_server(debug=True, port=5000)

Attention 1

在这个实现中,我花费时间最长的是解决如何将LabelDropdown放置在同一行内这个问题。如代码中所示,最终选择的方案(Line35-45)是:将LabelDropdown放置在另一个Label中,并且通过css设置了Dropdowndisplayinline-table——我尝试了其他的值,均达不到想要的效果,我其实没有太明白为什么这样设置就可以。

Attention 2

设置了筛选条件后,通过点击Button按钮来将所有的设置同步到后端函数。在编写后端函数时需要注意,Buttonn_click作为该函数的输入,即使在函数中没有被用到,也要放到形参中,因为该后端函数的参数数量必须与其装饰器中定义的数量一致(Line91-100)。

Attention 3

代码中我引用了外部的css文件中的一组格式设置:

.my-label {
    padding-right: 20px;
    margin-left: 45px;
}

欢迎留言讨论。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【1805. 字符串中不同整数的数目】

来源:力扣(LeetCode) 描述: 给你一个字符串 word ,该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。例如,"a123bc34d8ef34" 将会变成 " 123 34 8 34" 。注意…

[附源码]JAVA毕业设计砂石矿山管理系统(系统+LW)

[附源码]JAVA毕业设计砂石矿山管理系统(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

如何将Word转成PDF格式?这三种方法总有一个适合你

如何把Word文档转换成PDF文件格式呢?大家在传输文件的时候,相信很多小伙伴都喜欢不使用PDF文件格式,因为它非常的稳定,在浏览文件的时候格式不会乱,但我们都是先做好Word文档,然后再把它转成PDF格式&#x…

诗人贺伟陪你看世界杯

国内三大拥有转播权的主流平台(央视、中国移动咪咕和抖音)都已经公布了解说阵容 CCTV解说阵容 贺炜、刘嘉远、朱晓雨、曾侃、李晨明、孙思辰、邵圣懿。 此次央视世界杯采取了“单口”解说的模式,这多少还是会让球迷们感到错愕。以往的足球盛…

ubuntu+Docker双容器docker-compose部署Django+Vue项目(2-Django)

文章目录部署Django后端接口下载Python环境及一些尝试pip包管理运行项目容器报错1(查询容器IP解决)报错2(pvsite_uwsgi.ini文件配置socket还是http)报错3(用http先)用python manage.py runserver运行项目先报错4(下载cryptography库)回到用uwsgidjango运行成功先在uwsgidjango中…

FT2004(D2000)开发实战之PBF配置

一 PBF概述 PBF英文全称Phytium Base Firmware,PBF主要作用: 初始化PLL设置CPU主频初始化DDR4初始化PCIe控制器初始化全局中断和定时器跳转到U-boot 飞腾FT2004芯片BIOS固件由两部分构成,PBF+U-boot或者PBF+UEFI,最终的BIOS烧写⽂件由PBF固件包中的脚本程序⽣成,当然在生…

为什么消费返利模式层出不穷?这个消费返利玩法值得你借鉴

大家好,我是林工,不知道大家听说过消费返利没有?消费返利是互联网常见的一个商业模式,是指互联网平台将自己所销售的商品和服务让渡给消费者并获得一定比例的报酬,消费者通过平台享受到的佣金和消费总额(金…

正则表达式简介

一、介绍 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。 正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字…

观察|数字营销正当时,企业如何玩转短视频?

​​双十二购物狂欢节即将来临,从手机APP的开屏广告到线下随处可见的广告屏,铺天盖地的短视频成为各大品牌宣传造势的重头戏。凭借具有强烈视觉冲击力的画面和魔性的配音配乐,短视频已然超越传统图文广告,迅速成长为占领受众心智的…

Java数据结构与Java算法学习Day05---二叉树(简略笔记记录)

目录 一、二叉树 79 1.1树的基本定义79 1.2数的相关术语 80 1.3二叉树的基本定义 81 1.4二叉查找树的创建 82 1.4.1二叉树查找树创建---插入方法(put) 83 1.4.2二叉树查找树创建---获取方法(get)84 1.4.3二叉树查找树创建…

大数据学习:进程管理(2)

文章目录一、系统资源监控1、free命令2、uname命令3、uptime命令4、netstat命令5、vmstat命令二、任务管理1、前台进程2、后台进程3、操作案例一、系统资源监控 1、free命令 观察内存(memory)使用情况 2、uname命令 查阅系统与核心相关信息 3、up…

JavaEE技术点:MySQL目录及基本命令介绍

1.MySQL目录介绍 (1)首先来看MySQL的安装目录,如图1-1所示: 图1-1 MySQL的安装目录 (2)图1-1中的bin目录中存放的是二进制的可执行文件,如图1-2所示: 图1-2 bin目录结构 (3)图1-2中的mysqld.exe是服务器程序,必须先…

山东:推进自然资源确权登记 助力自然资源保护发展

2019年,自然资源统一确权登记工作启动以来,山东省认真贯彻生态文明思想,坚决扛牢政治责任,按照国家统一部署,担当作为、加压奋进,在探索推进自然资源确权登记法治化、规范化、标准化、信息化等方面取得了积…

用亚马逊自养号进行测评的好处

自养号顾名思义就是自己用真实环境养出来的买家账号。通过真实的邮箱、手机号码和注册地当地真实收货地址,包括IP等等,但是也有很多卖家没有完全认清自养号的好处,下面就看看用亚马逊自养号进行测评的好处 对于卖家来说,使用自养号…

【超全面】机器学习中的超参优化方法总结

目录 1. 什么是超参数 2. 超参数类型 3. 主流超参优化方法 (1)手动调参 缺点: python代码:(例子) 手动调参 参数的重要性顺序 超参具体如何影响模型性能 超参合适的范围 (2)网格搜索 …

Web3中文|马斯克也疯狂?网红AI “ChatGPT”有多火?

一个名为“ChatGPT”的网红AI竟写出了毁灭人类的计划书。 计划书的步骤详细到入侵各国计算机系统、控制武器、破坏通讯、交通系统等等。和电影里的情节一模一样,甚至ChatGPT还给出了相应的Python代码。 诱导ChatGPT写下该计划的是一位名为扎克德纳姆(Z…

使用 Echarts 插件完成中国旅游地图

目录前言:什么是 Echarts 插件具体实现思路中国旅游地图成品展示步骤:完成中国旅游地图代码总结:前言: 大家都知道,一般情况下,想要使用前端设置一个 中国旅游地图 需要使用 canvas 画布进行编写&#xff…

尿苷二磷酸修饰阿拉伯糖,阿拉伯糖偶联核苷酸,UDP-B-L-阿拉伯糖二钠盐,15839-78-8

产品名称:尿苷二磷酸修饰阿拉伯糖,阿拉伯糖偶联核苷酸 英文名称:UDP-b-L-arabinopyranose disodium salt,UDP-L-Arabinose CAS号:15839-78-8 分子式:C14H22N2O16P2 分子量:536.27600 产地&am…

一种基于交叉选择的柯西反向鲸鱼优化算法QOWOA附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

研究 | CT图像迭代重建算法研究进展

上次讲到我实现了一下代数迭代重建(ART),到周六开会的时候才大概了解了我的研究方向应该是统计迭代重建,一下子就把我给搞懵了。按照书上的说法,统计迭代法是在发射型CT(SPECT和PET)中应用广泛&…