【Dash】feffery_antd_componenet 中的 AntdSpace

news2024/12/28 19:05:51

一、feffery_antd_componenet 中的 AntdSpace

feffery_antd_components(简称fac)中的AntdSpace组件是一个基于Ant Design的Dash第三方组件,它用于在水平或垂直方向上放置多个元素,并提供元素之间的间距。以下是AntdSpace组件的一些主要功能:

1、设置间距:

可以通过size属性来设置元素之间的间距,支持预设的small、middle、large三种尺寸,也可以自定义间距。

2、对齐方式:

可以设置子元素的对齐方式,通过align属性,可以设置为start、end、center、baseline。

3、自动换行:

通过wrap属性,可以设置是否自动换行,仅在水平方向上有效。

4、分隔符:

可以使用split属性来设置分隔符,例如在链接之间添加垂直分隔线。

5、紧凑模式:

AntdSpace.Compact用于表单组件之间紧凑连接且合并边框,支持的组件包括Button、AutoComplete、Cascader、DatePicker、Input、InputNumber、Select、TimePicker等。

6、垂直方向:

AntdSpace组件默认是水平方向的,但也可以设置为垂直方向,通过direction属性设置为vertical。

7、自定义尺寸:

可以通过传递一个数字给size属性来自定义间距大小。

8、预设间距:

AntdSpace组件提供了预设的间距大小,也可以通过CSS来进一步自定义样式。

二、代码

import dash
from dash import html
import feffery_antd_components as fac
from dash.dependencies import Output, Input, State

app = dash.Dash(__name__)

app.layout = html.Div(
    [
        fac.AntdSpace(
            [
                fac.AntdDivider('AntdSpace 的应用', innerTextOrientation='center'),
                fac.AntdSpace(
                    [
                        fac.AntdText(
                            '对齐方向: '
                        ),
                        fac.AntdRadioGroup(
                            id='space-align-input',
                            options=['start', 'end', 'center', 'baseline'],
                            value='start',
                        ),  # 单选按钮
                    ],
                    size='large',
                )
            ],
            direction='vertical',
            size='large',
            style={
                'width': '100%',
            },
        ),
        fac.AntdSpace(
            [
                fac.AntdText(
                    '间距大小: '
                ),
                fac.AntdRadioGroup(
                    id='space-size-input',
                    options=['small', 'middle', 'large', '48'],
                    value='small',  # 子容器改写默认值为 small
                ),
            ],
            size='large',   # AntdSpace设置size 默认值为 large
            style={
                'width': '100%',
            }
        ),
        fac.AntdSpace(
            fac.AntdButton('添加 addSplitLIne 分割线', id='space-add-split-line', type='primary'),
            style={
                'padding': '5px',
            }

        ),
        fac.AntdSpace(
            fac.AntdButton('添加自定义分割线', id='space-add-line', type='primary'),
            style={
                'padding': '5px',
            }
        ),
        fac.AntdParagraph(),
        fac.AntdSpace(
            fac.AntdButton('设置元素超宽后自动换行(wrap=True)', id='space-wrap', type='primary'),
            style={
                'padding': '5px'
            }
        ),
        fac.AntdSpace(
            [
                fac.AntdSpace(
                    [
                        fac.AntdButton(button_type, type=button_type, danger=danger)
                        for button_type, danger in [['primary', False], ['default', False], ['dashed', False], ['text', False], ['link', False]] * 5
                    ],
                    wrap=False,
                    addSplitLine=True,
                    id='space-button1',
                ),
                fac.AntdSpace(
                    [
                        fac.AntdButton(button_type, type=button_type, danger=danger)
                        for button_type, danger in [['primary', True], ['default', True], ['dashed', True], ['text', True], ['link', True]] * 5
                    ],
                    wrap=False,
                    addSplitLine=True,
                    id='space-button2',
                    # customSplit=html.Div(
                    #     style={'height': 30, 'borderRight': '1px dashed #8c8c8c'}
                    # )

                ),
            ],
            direction='vertical',
            # id='space-button',
        ),
        fac.AntdParagraph(),
        # 横向拓展
        fac.AntdSpace(
            [
                html.Div(
                    style={
                        'backgroundColor': 'rgba(255, 255, 207, 1)',
                        'height': '20px',
                        'width': '50px',
                    }
                ),
                html.Div(
                    style={
                        'backgroundColor': 'rgba(250, 240, 155, 1)',
                        'height': '40px',
                        'width': '50px',
                    }
                ),
                html.Div(
                    style={
                        'backgroundColor': 'rgba(244, 234, 98, 1)',
                        'height': '60px',
                        'width': '50px',
                    }
                ),
                html.Div(
                    style={
                        'backgroundColor': 'orange',
                        'height': '80px',
                        'width': '50px',
                    }
                )
            ] * 2,
            id='space-align-output1',
            align='start',  # 系统默认值也是 start
            size='large',
            style={
                'backgroundColor': 'rgba(241, 241, 241, 0.8)',
                'padding': '10px',
            },
            addSplitLine=True,
        ),
        # 纵向拓展
        fac.AntdDivider(),
        fac.AntdSpace(
            [
                html.Div(
                    style={
                        'backgroundColor': 'rgba(243, 230, 195, 1)',
                        'height': '50px',
                        'width': '20px',
                    }
                ),
                html.Div(
                    style={
                        'backgroundColor': 'rgba(217, 188, 154, 1)',
                        'height': '50px',
                        'width': '40px',
                    },
                ),
                html.Div(
                    style={
                        'backgroundColor': 'rgba(218, 158, 106, 1)',
                        'height': '50px',
                        'width': '60px',
                    }
                ),
            ],
            id='space-align-output2',
            align='start',  # 系统默认值也是 start
            direction='vertical',
            size='large',
            style={
                'backgroundColor': 'rgba(241, 241, 241, 0.8)',
                'padding': '12px',
            },
        ),
    ]
)


@app.callback(
    [Output('space-align-output1', 'align'),
     Output('space-align-output2', 'align'),
     Output('space-button1', 'size'),
     Output('space-button2', 'size'),
     Output('space-align-output1', 'size'),
     Output('space-align-output2', 'size'),
     Output('space-button1', 'addSplitLine'),
     Output('space-button2', 'addSplitLine'),
     Output('space-align-output1', 'addSplitLine'),
     Output('space-button1', 'customSplit'),
     Output('space-button2', 'customSplit'),
     Output('space-button1', 'wrap'),
     Output('space-button2', 'wrap'),
     ],
    [Input('space-align-input', 'value'),   # align 对齐方向
     Input('space-size-input', 'value'),    # size 间距大小
     Input('space-add-split-line', 'nClicks'),  # addSplitLine
     Input('space-add-line', 'nClicks'),
     Input('space-wrap', 'nClicks'),
     ]
)
def update_space(value_align, value_size, nclick_add_split_line, nclick_add_line, nclick_wrap):
    if value_align:
        re_align = value_align

    if value_size and value_size == '48':
        re_size = 48
    else:
        re_size = value_size

    if nclick_add_split_line and nclick_add_split_line % 2 == 1:
        re_app_split_line = True
    else:
        re_app_split_line = False

    if nclick_add_line and nclick_add_line % 2 == 1:
        re_add_line = html.Div(
            style={'height': 30, 'borderRight': '1px dashed #8c8c8c'}
        )
    else:
        re_add_line = None

    if nclick_wrap and nclick_wrap % 2 == 1:
        re_wrap = True
    else:
        re_wrap = False

    return [re_align, re_align,
            re_size, re_size, re_size, re_size,
            re_app_split_line, re_app_split_line, re_app_split_line,
            re_add_line, re_add_line,
            re_wrap, re_wrap]


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

 

 

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

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

相关文章

一文说清什么是AI原生(AI Native)应用以及特点

引言:智能新纪元 如今,走在街头,哪儿不被智能科技包围?智能音箱、自动驾驶汽车、聊天机器人......这些都在用不同的方式提升我们的生活体验。然而,究竟什么才能称得上“AI原生应用”呢? 什么是AI原生&…

C++:STL简介

✨ Blog’s 主页: 白乐天_^v^ 🌈 个人Motto:他强任他强,清风拂山岗! 💫 欢迎来到我的学习笔记! 一、STL引入 STL(Standard template libaray-标准模板库…

最新厦门新能安社招入职Verify测评笔试攻略敬请查收SHL

作为全球知名锂电池供应商——ATL与CATL的合资公司,新能安专注高端锂电池的研究与创新,聚焦储能系统、微型车、智能产品驱动电池等三大领域的研发、生产、销售与服务。 a.测评内容包含演绎推理数字推理两部分,大约用时40分钟左右; b.正式测评…

node.js实现阿里云短信发送

效果图 实现 一、准备工作 1、官网直达网址: 阿里云 - 短信服务 2、按照首页提示依次完成相应资质认证和短信模板审核; 3、获取你的accessKeySecret和accessKeyId; 方法如下: 获取AccessKey-阿里云帮助中心 4、获取SignNa…

测试你们认为最好的AI工具,是不是好用得自己试试!

大家好,我是凡人,在 OpenAI 春季发布会后, GPT-4o 一时风光无量,一个同事不信邪,非要用 GPT-4o 版本对 OpenAI 官网上的例子尝试生成,本来还是嘲笑他的心态,但他还真的发现了点有意思的事情。 …

多线程篇(阻塞队列- BlockingQueue)(持续更新迭代)

目录 一、了解什么是阻塞队列之前,需要先知道队列 1. Queue(接口) 二、阻塞队列 1. 前言 2. 什么是阻塞队列 3. Java里面常见的阻塞队列 三、BlockingQueue(接口) 1. 前言 2. 简介 3. 特性 3.1. 队列类型 …

实时地图+瞬移,黑神话地图工具来了

工具下载: https://pan.quark.cn/s/12b9cef46bf0 瞬移功能使用说明: 1、必须在一修大师客户端: 使用猫修APP扫码登陆后使用; 2、打开《黑神话》游戏; 3、点击修改器页面右上角“开始使用”按钮; 4、点击你想要瞬移的点位图标…

使用Azure Devops Pipeline将Docker应用部署到你的Raspberry Pi上

文章目录 1. 添加树莓派到 Agent Pool1.1 添加pool1.2 添加agent 2. 将树莓派添加到 Deployment Pool2.1 添加pool2.2 添加target 3. 添加编译流水线3.1 添加编译命令3.2 配置触发器 4. 添加发布流水线4.1 添加命令行4.2 配置artifact和触发器 5. 完成 1. 添加树莓派到 Agent P…

spring项目使用邮箱验证码校验

本项目采用免费QQ邮箱验证码方式进行登录安全的校验。 前期工作 申请邮箱安全授权码 打开QQ邮箱官网点击设置 进入设置页面后点击账户按钮 进入账户后一直往下拉页面找到POP3服务栏,然后点击管理服务(如果没有开启服务需要先开启服务,按照…

vivado 时钟交互报告

步骤6:时钟交互报告 在创建约束之后或期间,必须验证约束是否完整且安全。 Vivado Design Suite默认情况下将所有时钟一起计时,除非您通过定义另有指定 时钟组或其他定时异常。set_clock_groups命令指定 异步或独占时钟域,并禁用它…

GIT | git提交注释自动添加信息头

GIT | git提交注释自动添加信息头 时间:2024年9月6日10:20:11 文章目录 GIT | git提交注释自动添加信息头1.操作2.commit-msg文件 1.操作 2.commit-msg文件 #!/bin/sh # # An example hook script to check the commit log message. # Called by "git commit&q…

OXC:光交叉连接(optical cross-connect)-介绍

1. 引用 https://zhuanlan.zhihu.com/p/259797386 实现对光网络的监控和光路切换 - MEMS 光开关-CSDN博客 MEMS光学器件— MEMS OXC(光交叉互连开关)_基于1n端口光开关构建的oxc-CSDN博客 OXC和OADM_oadm oxc-CSDN博客 光的世界第二弹:O…

2024全国大学生数学建模竞赛B题完整论文讲解

大家好呀,从发布赛题一直到现在,总算完成了2024 年全国大学生数学建模竞赛B 题 生产过程中的决策问题 完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 …

SCI论文中通过图更好的呈现出自己性能的优越性

1.在大家广义的对自己工作与前人工作比较的时候,一般大家选用的都是表格比较方法。表格比较确实在一点程度上展示出了差异性,接下来我将展示用图的方法比较。例如以下的数据比较。 2.首先按照数据画出图形,然后对图形进行优化。 3.双击图形…

Git 常用指令(分支、克隆、远程仓库、冲突)

Git 常用指令 用树的形式对代码的历史版本进行维护,有利于多人协作与代码回滚。 1. 基本概念 工作区:仓库的目录。工作区是独立于各个分支的。暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个…

使用 JAXB 将内嵌的JAVA对象转换为 xml文件

使用 JAXB 将内嵌的JAVA对象转换为 xml文件 1. 需求2. 实现(1)FileDesc类(2)MetaFileXml类(3)生成对应的xml文件 1. 需求 获取一个目录下所有文件的元数据信息(文件名、大小、后缀等&#xff0…

Nginx安装方式

一、Nginx环境准备(了解) 1.1 Nginx版本介绍 Nginx的官方网站为: http://nginx.org 打开源码可以看到如下的页面内容 Nginx的官方下载网站为nginx: download,当然你也可以之间在首页选中右边的download进入版本下载网页。在下载页面我们会…

【软件测试】设计测试用例

目录 📕引言 🍀测试用例 🚩概念 🚩设计测试用例的万能公式 🏀常规思考逆向思维发散性思维 🏀万能公式 🎄设计测试用例的方法 🚩基于需求的设计方法 🏀明确需求中…

使用Charles对安卓手机进行抓包

写在前面的话 Charles 介绍 Charles 的主要功能 网络请求拦截与分析 Charles 通过将自己配置成系统的代理服务器,拦截所有通过它的 HTTP 和 HTTPS 请求与响应。开发者可以查看每个网络请求的详细信息,包括请求的 URL、请求头、请求体、响应头、响应体…

Python和C++多尺度导图

🎯要点 热化学属性观测蒙特卡罗似然比灵敏度分析时间尺度上动力学化学催化反应动力学建模自动微分电化学分析模型反应动力学数学模型渔业生态不确定性模型敏感性分析空间统计地理模型分析技术多维数据表征实现生成艺术图案流苏物体长度比,面积比和复杂度…