Python Dash构建轻量级Web汇率计算器实战

沈亦白
沈亦白
发布时间:2026-10-16| 4人浏览过
原创

本文介绍如何使用Python库Dash构建轻量级Web应用。通过结合Flask、React和Plotly.js,无需JavaScript即可实现交互界面。教程涵盖环境配置、依赖安装、布局搭建及回调函数编写,展示如何开发一个支持多货币实时换算的汇率计算器。

对于刚接触前端网页开发的新手来说,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

由于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)} €',
        f'{round(rmb/7.0309,2)} €',
        f'{round(rmb/0.0852,2)} $'
        )

@app.callback可理解为装饰器,用于实现网页交互。rule函数用于计算汇率。注:这里的货币符号不一定完全准确,仅供示意,无需过于纠结细节。

界面效果

到此这篇关于利用Python实现一个简单的Web汇率计算器的文章就介绍到这了,更多相关Python汇率计算内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。