百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

手把手教你撸一个 Web 汇率计算器

myzbx 2025-05-27 16:22 7 浏览

作者:咕隆先森

来源:Python 技术

前段时间刚接触到前端网页开发,但是对于刚入门的小白而言,像flask、Django等这类稍大型的框架确实不太适合,今天这个Dash是集众家之长于一体的轻量化Web开发库。

Dash是什么?

Dash 是一个用于构建基于 Web 的应用程序的 Python 库,无需 JavaScript 。

Dash 同时也是用于创建分析 Web 应用程序的用户界面库。那些使用 Python 进行数据分析、数据挖掘、可视化、建模、仪器控制和报告的人可以立即使用 Dash 。

Dash 建立在 Plotly.js、React 和 Flask 之上,将现代 UI 元素(如下拉列表、滑块和图形)与你的分析 Python 代码相结合。

网页搭建步骤

安装相关依赖(库)

提示:本文基于Windows 10、Anaconda 3、Sublime Text,Python版本为3.6.5 个人习惯单独新一个用于dash开发的虚拟环境,创建命令:

conda create -n myenv_dash python==3.6.5

安装Dash的第三方包:

pip install dash

因为是基于Flask,所以系统会自动安装相应的依赖,这里我建议也安装一个额外依赖:dash_bootstrap_components

pip install dash_bootstrap_components

此依赖包含Twitter的bootstrap组件。

导入相关包

from dash import Dash, html, dcc
from dash.dependencies import Input, Output
import dash_bootstrap_components as dbc

构建app

try:
    # 获取在线bootstrap.min.css
    app = Dash(__name__, external_stylesheets = ['https://cdn.staticfile.org/twitter-bootstrap/4.5.2/css/bootstrap.min.css'])
    print('此网页渲染基于在线的CSS')
except:
    # 获取本地bootstrap.min.css
    app = Dash(__name__, external_stylesheets = [r"E:\Desktop\My_Python\Dash\css\bootstrap.min.css"])
    print('此网页渲染基于本地的CSS')
app.title = '在线汇率计算器'

此处使用的css有在线的和本地的,利用try……except……防止在线的css文件无法加载而导致报错。

构建结果输出函数

代码如下(示例):

# 输出函数,对于重复使用的,定义函数更快捷
def item(name, img_path):
    return dbc.ListGroupItem([html.H5(name), html.Img(src=img_path), html.H5('---', id=name, className='float-right')])

因为是单输入,多输出,构建item函数可以重复利用,优化代码, 函数参数有货币名称和国旗(提前准备好图片素材,大小建议不要太大,我的图片是160*110)。dbc.ListGroupItem组件可以很好的定位标签、文字; 其中的className='float-right'可以理解为显示样式,代表“靠右浮动”

网页结构Layout搭建

代码如下(示例):

app.layout = dbc.Container(
    children=[
        dbc.ListGroup([
            dbc.ListGroupItem(children=[
                html.H1("汇率计算器-简单版",style={'textAlign': 'center','color':'#272528'}),
                html.P('输入:用于兑换外币的人民币数;输出:能兑换到的外币数;单位:单位币值。',style={'textAlign': 'center','color':'#BB002D'}),
                dbc.Input(value = 0, id = 'input', type='number')
            ],active=True),
            item('JPY','./assets/Japan.jpg'),
            item('USD','./assets/USA.jpg'),
            item('GBP','./assets/UK.jpg'),
            item('HKD','./assets/Hongkong.jpg'),
            item('EUR','./assets/EU.png'),
            item('CHF','./assets/France.png'),
            item('INR','./assets/India.jpg')
        ],className='shadow')
    ],style={'padding':'2rem'}
)

layout为GUI布局,采用列表的模式,根据行列进行排布;style={'textAlign': 'center','color':'#272528'}为文字排布样式设定,为字典类型,可以设置字体,颜色等 dbc.Input(value = 0, id = 'input', type='number')默认value值为0,数据类型为number用于计算;style={'padding':'2rem'}为Container(容器)的居中显示样式,代表画布距离边界的宽度。

callback回调参数设定

代码如下(示例):

@app.callback(
    output = [
    Output('JPY', 'children'),
    Output('USD', 'children'),
    Output('GBP', 'children'),
    Output('HKD', 'children'),
    Output('EUR', 'children'),
    Output('CHF', 'children'),
    Output('INR', 'children')
    ],
    inputs = [Input('input', 'value')]
    )
def rule(rmb):
    rmb = rmb if rmb is not None else 0
    return (
        f'{round(rmb/0.0501,2)} ¥',
        f'{round(rmb/6.7646,2)} $',
        f'{round(rmb/8.1682,2)} £',
        f'{round(rmb/0.8615,2)} ¥',
        f'{round(rmb/6.8881,2)} EUR',
        f'{round(rmb/7.0309,2)} EUR',
        f'{round(rmb/0.0852,2)} #39;
        )

@app.callback可以理解为装饰器,用于网页的交互。rule函数用于计算汇率。ps:这里的货币符号不一定全对,意思一些,不用太较真哈!!!

界面效果

总结

本项目到这里,整个项目就已经完成了,涉及到的一些基础技能,还需要一点功力,好了,今天的分享就到这里,后续会更新如何使用requests爬虫获取实时汇率进行动态汇率换算。

相关推荐

谷歌大刀阔斧,安卓UI将迎海量细节变更

前段时间谷歌宣布,将于北京时间2025年5月14日1时(美国太平洋时间5月13日10时)举行一场特别直播节目,名为《TheAndroidShow:I/OEdition》。该活动由Android...

Google Drive 通过新的分析功能改善视频播放器体验

GoogleDrive推出了一项新功能,可让您衡量上传到GoogleDrive的视频的参与度。Google在一篇博客文章中宣布,它已经更新了视频播放器的“详细信息”面板,新增了“分析”部分,...

DeepSeek生成Word方案

以下是结合DeepSeek生成网页、转PDF再转Word的三步进阶方案,涵盖普通用户与开发者两种实现路径:一、原生方案:HTML→PDF→Word全流程(适合普通用户)生成标准HTML使用DeepSe...

如何使用谷歌地图和LightningChart创建地理空间地图图表?

LightningChartJS是一款高性能的JavaScript图表工具,专注于性能密集型、实时可视化图表解决方案。LightningChartJS官方最新版免费下载试用,历史版本下载,在...

用 mxgraph.js 打造超实用流程图:从入门到精通(附源码)

在技术快速发展的当下,流程图作为一种直观展示流程和逻辑关系的工具,在项目管理、软件开发、业务流程梳理等诸多领域发挥着重要作用。今天我就和大家分享一下如何使用mxgraph.js构建功能丰富的流程图...

评测:4款免费开源数据可视化JavaScript库

交互式数据可视化在很大程度上取决于JavaScript库的任务能力。在这篇文章中,我们将看看四个JavaScript库:D3,InfoVis,Processing.js,和Recline.js。所有这...

DeepSeek自动生成漂亮的数据分析面板,会计天又塌了!老板超喜欢

如果你还在认为Deepseek分析能力强而做图弱时,只能说你根本不了解它。它其实可以自动生成高质量的数据分析面板。先来几个图吓吓你:如果不看标题,你是不是以为这是哪位数据分析高手做的图,嘿嘿,这的确是...

手绘风格的数据可视化 Sketchify,让你的图表也萌萌哒

作者|naughty来源|oschina.net/taogang/blog/3130390多少年以前,我在一家BI企业负责数据可视化产品的开发,作为产品创新的需要,一篇论文吸引了我的目光,《S...

告别单调,Django后台主页改造 - 使用AdminLTE组件

前言之前我做了个Django的项目,为了让管理后台更加美观,我对Django(应该说是SimpleUI的)默认的Admin后台主页进行改造,具体可以看这篇文章:项目完成-基于Django3.x版本...

Mermaid (美人鱼) 一个JS 渲染的图表工具

Mermaid是一种基于JavaScript的图表和图表工具,它使用受Markdown启发的文本定义和渲染器来创建和修改复杂的图表。Mermaid的主要目的是帮助文档跟上开发。图表和文档编...

分享10+可视图表库, 助你轻松制作精美可视化大屏

前言在开发可视化项目的过程中往往涉及到可视化图表,我们看到的很多酷炫的报表,大屏,都用了非常多的图表,接下来我和大家分享一些比较流行的开源免费的图表库.来源:趣谈前端公众号github:h...

JavaScript Charts更新至v3.15.2

JavaScriptCharts是兼容性好的JavaScript、HTML5图表开发工具,能满足大部分的开发需求,包括序列图表(列型图,条形图,线型图,面积图,步骤折线图,平滑折线图,蜡烛图,ohl...

JavaScript Charts更新至v3.17.0

JavaScriptCharts兼容性好的JavaScript、HTML5图表开发工具,能满足大部分的开发需求,包括序列图表(列型图,条形图,线型图,面积图,步骤折线图,平滑折线图,蜡烛图,ohlc...

最实用的大数据可视化分析工具汇总

四十三、OpenHeatMapOpenHeatMap简单易用,用户可以用它上传数据、创建地图、交流信息。它可以把数据(如GoogleSpreadsheet的表单)转化为交互式的地图应用,并在网上分享...

JavaScript Charts v3.17.3发布

JavaScriptCharts兼容性好的JavaScript、HTML5图表开发工具,能满足大部分的开发需求,包括序列图表(列型图,条形图,线型图,面积图,步骤折线图,平滑折线图,蜡烛图,ohlc...