Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
一、開(kāi)始吧,先做一個(gè)360*500的盒子。
二、加入輸入框,輸入框給它270寬,再配個(gè)灰色背景。
三、做18個(gè)div,我覺(jué)得這樣子比table標(biāo)簽更直觀,其實(shí)你還是什么都看不見(jiàn),因?yàn)樽质呛谏模尘昂谏摹?/p>
四、行了,我們給div加樣式吧。
五、我們讓這18個(gè)按鈕浮動(dòng),它們就不會(huì)獨(dú)占一行了,然后再讓它們外部上下左右距離為5px。
六、把按鍵做成圓的,里面的字居中,然后再把字變大。
七、把計(jì)算器的整體外觀也改改。
八、“=”和“0” 這兩個(gè)一個(gè)是加高,一個(gè)是加寬,我們得再加樣式區(qū)別對(duì)待。
九、我們讓等號(hào)按鈕右浮動(dòng)就可以了。
十、對(duì)按鈕再修飾,做兩個(gè)樣式,一個(gè)是灰白色,一個(gè)是土黃色。
十一、對(duì)輸入框做個(gè)修飾,最終完成界面設(shè)計(jì)。
十二、我們整個(gè)js只用獲取一個(gè)元素對(duì)象,那就是input。
十三、做按鈕點(diǎn)擊事件,把大多數(shù)按鈕的點(diǎn)擊都寫進(jìn)去,這里我特意用箭頭函數(shù),當(dāng)學(xué)習(xí)吧。
幾乎所有的按鈕都調(diào)用這個(gè)clickbt函數(shù),唯有“=”號(hào)不用。
十四、該是為“=”加函數(shù)的時(shí)候了,這里用了eval(),能把字符串當(dāng)算式運(yùn)算出結(jié)果。
十五、總結(jié),到此為止,整個(gè)計(jì)算器就做出來(lái)了,大家會(huì)發(fā)現(xiàn)js部分很簡(jiǎn)單,因?yàn)槲覀冎挥幸话愕募訙p乘除計(jì)算,有更多想法的朋友,自己補(bǔ)充吧。
image
image
IntelliJ IDEA
image
image
完整代碼比較長(zhǎng),博客正文就不貼了,詳見(jiàn)下方鏈接。
https://gitee.com/hspbc/calculators
image
用十種編程語(yǔ)言開(kāi)發(fā)計(jì)算器應(yīng)用-第一篇-C語(yǔ)言
用十種編程語(yǔ)言開(kāi)發(fā)計(jì)算器應(yīng)用-第二篇-Java
用十種編程語(yǔ)言開(kāi)發(fā)計(jì)算器應(yīng)用-第三篇-Python
用十種編程語(yǔ)言開(kāi)發(fā)計(jì)算器應(yīng)用-第四篇-Kotlin
用十種編程語(yǔ)言開(kāi)發(fā)計(jì)算器應(yīng)用-第五篇-Flutter
用十種編程語(yǔ)言開(kāi)發(fā)計(jì)算器應(yīng)用-第六篇-iOS
廈門大學(xué)計(jì)算機(jī)專業(yè)|華為八年高級(jí)工程師
十年軟件開(kāi)發(fā)經(jīng)驗(yàn),5年編程培訓(xùn)教學(xué)經(jīng)驗(yàn)
目前從事編程教學(xué),軟件開(kāi)發(fā)指導(dǎo),軟件類畢業(yè)設(shè)計(jì)指導(dǎo)。
所有編程資料及開(kāi)源項(xiàng)目見(jiàn)https://cxyxy.blog.csdn.net/article/details/120405881
者:咕隆先森
來(lái)源:Python 技術(shù)
前段時(shí)間剛接觸到前端網(wǎng)頁(yè)開(kāi)發(fā),但是對(duì)于剛?cè)腴T的小白而言,像flask、Django等這類稍大型的框架確實(shí)不太適合,今天這個(gè)Dash是集眾家之長(zhǎng)于一體的輕量化Web開(kāi)發(fā)庫(kù)。
Dash 是一個(gè)用于構(gòu)建基于 Web 的應(yīng)用程序的 Python 庫(kù),無(wú)需 JavaScript 。
Dash 同時(shí)也是用于創(chuàng)建分析 Web 應(yīng)用程序的用戶界面庫(kù)。那些使用 Python 進(jìn)行數(shù)據(jù)分析、數(shù)據(jù)挖掘、可視化、建模、儀器控制和報(bào)告的人可以立即使用 Dash 。
Dash 建立在 Plotly.js、React 和 Flask 之上,將現(xiàn)代 UI 元素(如下拉列表、滑塊和圖形)與你的分析 Python 代碼相結(jié)合。
提示:本文基于Windows 10、Anaconda 3、Sublime Text,Python版本為3.6.5 個(gè)人習(xí)慣單獨(dú)新一個(gè)用于dash開(kāi)發(fā)的虛擬環(huán)境,創(chuàng)建命令:
conda create -n myenv_dash python==3.6.5
安裝Dash的第三方包:
pip install dash
因?yàn)槭腔贔lask,所以系統(tǒng)會(huì)自動(dòng)安裝相應(yīng)的依賴,這里我建議也安裝一個(gè)額外依賴: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
try:
# 獲取在線bootstrap.min.css
app = Dash(__name__, external_stylesheets = ['https://cdn.staticfile.org/twitter-bootstrap/4.5.2/css/bootstrap.min.css'])
print('此網(wǎng)頁(yè)渲染基于在線的CSS')
except:
# 獲取本地bootstrap.min.css
app = Dash(__name__, external_stylesheets = [r"E:\Desktop\My_Python\Dash\css\bootstrap.min.css"])
print('此網(wǎng)頁(yè)渲染基于本地的CSS')
app.title = '在線匯率計(jì)算器'
此處使用的css有在線的和本地的,利用try……except……防止在線的css文件無(wú)法加載而導(dǎo)致報(bào)錯(cuò)。
代碼如下(示例):
# 輸出函數(shù),對(duì)于重復(fù)使用的,定義函數(shù)更快捷
def item(name, img_path):
return dbc.ListGroupItem([html.H5(name), html.Img(src=img_path), html.H5('---', id=name, className='float-right')])
因?yàn)槭菃屋斎耄噍敵觯瑯?gòu)建item函數(shù)可以重復(fù)利用,優(yōu)化代碼, 函數(shù)參數(shù)有貨幣名稱和國(guó)旗(提前準(zhǔn)備好圖片素材,大小建議不要太大,我的圖片是160*110)。dbc.ListGroupItem組件可以很好的定位標(biāo)簽、文字; 其中的className='float-right'可以理解為顯示樣式,代表“靠右浮動(dòng)”
代碼如下(示例):
app.layout = dbc.Container(
children=[
dbc.ListGroup([
dbc.ListGroupItem(children=[
html.H1("匯率計(jì)算器-簡(jiǎn)單版",style={'textAlign': 'center','color':'#272528'}),
html.P('輸入:用于兌換外幣的人民幣數(shù);輸出:能兌換到的外幣數(shù);單位:?jiǎn)挝粠胖怠?#39;,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布局,采用列表的模式,根據(jù)行列進(jìn)行排布;style={'textAlign': 'center','color':'#272528'}為文字排布樣式設(shè)定,為字典類型,可以設(shè)置字體,顏色等 dbc.Input(value = 0, id = 'input', type='number')默認(rèn)value值為0,數(shù)據(jù)類型為number用于計(jì)算;style={'padding':'2rem'}為Container(容器)的居中顯示樣式,代表畫(huà)布距離邊界的寬度。
代碼如下(示例):
@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可以理解為裝飾器,用于網(wǎng)頁(yè)的交互。rule函數(shù)用于計(jì)算匯率。ps:這里的貨幣符號(hào)不一定全對(duì),意思一些,不用太較真哈!!!
本項(xiàng)目到這里,整個(gè)項(xiàng)目就已經(jīng)完成了,涉及到的一些基礎(chǔ)技能,還需要一點(diǎn)功力,好了,今天的分享就到這里,后續(xù)會(huì)更新如何使用requests爬蟲(chóng)獲取實(shí)時(shí)匯率進(jìn)行動(dòng)態(tài)匯率換算。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。