利用PyWebIO庫(kù)10分鐘搭建一個(gè)漂亮的Python?Web應(yīng)用
前言
作為Python開(kāi)發(fā)者,我們經(jīng)常需要為自己的腳本或程序開(kāi)發(fā)一個(gè)簡(jiǎn)單的圖形界面。傳統(tǒng)的tkinter雖然能用,但界面總是不夠美觀;Web框架如Flask、Django又顯得太重了。今天,我要向大家推薦一個(gè)令人驚艷的Python庫(kù) —— PyWebIO!
PyWebIO是什么?
PyWebIO是一個(gè)用于在瀏覽器上獲取輸入和進(jìn)行輸出的Python工具庫(kù),它能讓我們:
- ?? 零前端知識(shí),純Python代碼構(gòu)建Web應(yīng)用
- ?? 自適應(yīng)布局,完美支持電腦和手機(jī)
- ?? 內(nèi)置豐富的UI組件,界面美觀大方
- ? 簡(jiǎn)單易用,10分鐘即可上手
快速入門(mén)示例
讓我們從一個(gè)簡(jiǎn)單的BMI計(jì)算器開(kāi)始:
from pywebio.input import input,FLOAT
from pywebio.output import put_text
def bmi():
height=input("請(qǐng)輸入您的身高(cm):",type=FLOAT)
weight=input("請(qǐng)輸入您的體重(kg):",type=FLOAT)
BMI=weight/ (height/100)**2
put_text('您的BMI指數(shù)是:%.1f'%BMI)
if BMI<18.5:
put_text('體重偏輕')
elif BMI<24:
put_text('體重正常')
else:
put_text('體重偏重')
if __name__=='__main__':
bmi()
就這么簡(jiǎn)單!運(yùn)行后你會(huì)得到一個(gè)精美的網(wǎng)頁(yè)界面。



PyWebIO的核心功能
1. 輸入控件
PyWebIO提供了豐富的輸入控件:
- 文本輸入:input()
- 下拉選擇:select()
- 復(fù)選框:checkbox()
- 文件上傳:file_upload()
- 滑動(dòng)條:slider()
2. 輸出展示
各種輸出方式讓你的應(yīng)用更生動(dòng):
- 文本輸出:put_text()
- 表格展示:put_table()
- 圖片顯示:put_image()
- Markdown渲染:put_markdown()
- 進(jìn)度條:put_processbar()
3. 布局控制
- 使用put_row()進(jìn)行橫向布局
- 使用put_column()進(jìn)行縱向布局
- 支持tabs、折疊面板等高級(jí)布局
實(shí)戰(zhàn)項(xiàng)目:文件批量重命名工具
讓我們來(lái)開(kāi)發(fā)一個(gè)實(shí)用的文件批量重命名工具:
from pywebio.input import *
from pywebio.output import *
import os
def rename_tool():
files=file_upload("選擇要重命名的文件:",accept="*/*",multiple=True)
prefix=input("輸入文件名前綴:")
with use_scope('result',clear=True):
for i,file in enumerate(files,1):
new_name=f"{prefix}_{i}{os.path.splitext(file['filename'])[1]}"
put_text(f"{file['filename']}->{new_name}")
put_text("重命名完成!")
if __name__=='__main__':
rename_tool()
進(jìn)階技巧
1. 與現(xiàn)有Web框架集成
PyWebIO可以輕松集成到Flask、Django等框架中:
from pywebio.platform.flask import webio_view
from flask import Flask
app=Flask(__name__)
app.add_url_rule('/tool','webio_view',webio_view(rename_tool),
methods=['GET','POST','OPTIONS'])
2. 異步支持
支持異步操作,實(shí)現(xiàn)更復(fù)雜的交互:
import asyncio
from pywebio import start_server
from pywebio.output import *
async def async_app():
while True:
put_text("自動(dòng)更新中...")
await asyncio.sleep(1)
3. 會(huì)話管理
多用戶支持,每個(gè)用戶獨(dú)立的會(huì)話空間:
from pywebio.session import run_async,run_js
async def on_click():
run_js('alert("clicked!")')
實(shí)用場(chǎng)景
PyWebIO特別適合以下場(chǎng)景:
- 數(shù)據(jù)可視化面板
- 簡(jiǎn)單的管理后臺(tái)
- 文件處理工具
- 機(jī)器學(xué)習(xí)模型展示
- 教學(xué)演示程序
部署技巧
本地部署
from pywebio import start_server start_server(applications,port=8080,host='0.0.0.0')
云端部署
支持部署到各種云平臺(tái):
- Heroku
- PythonAnywhere
- 阿里云
- 騰訊云
PyWebIO是一個(gè)讓Python開(kāi)發(fā)者眼前一亮的工具庫(kù),它完美解決了Python GUI開(kāi)發(fā)的痛點(diǎn)。無(wú)需學(xué)習(xí)前端技術(shù),幾行代碼就能構(gòu)建美觀的Web應(yīng)用,這正是Python"人生苦短,我用Python"理念的完美詮釋。
- PyWebIO官方文檔:https://pywebio.readthedocs.io/
- GitHub倉(cāng)庫(kù):https://github.com/wang0618/PyWebIO
- PyPI頁(yè)面:https://pypi.org/project/pywebio/
總結(jié)
到此這篇關(guān)于利用PyWebIO庫(kù)10分鐘搭建一個(gè)漂亮的Python Web應(yīng)用的文章就介紹到這了,更多相關(guān)PyWebIO搭建Python Web應(yīng)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pygame實(shí)現(xiàn)一個(gè)類(lèi)似滿天星游戲流程詳解
這篇文章主要介紹了使用pygame來(lái)編寫(xiě)類(lèi)滿天星游戲的全記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-09-09
PyTorch使用CNN實(shí)現(xiàn)圖像分類(lèi)
圖像分類(lèi)是計(jì)算機(jī)視覺(jué)領(lǐng)域的一項(xiàng)基本任務(wù),也是深度學(xué)習(xí)技術(shù)的一個(gè)常見(jiàn)應(yīng)用,近年來(lái),卷積神經(jīng)網(wǎng)絡(luò)(cnn)和PyTorch庫(kù)的結(jié)合由于其易用性和魯棒性已經(jīng)成為執(zhí)行圖像分類(lèi)的流行選擇,所以本文給大家介紹了PyTorch使用CNN實(shí)現(xiàn)圖像分類(lèi)的示例,需要的朋友可以參考下2025-03-03
Python爬蟲(chóng)入門(mén)案例之回車(chē)桌面壁紙網(wǎng)美女圖片采集
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,學(xué)的扎不扎實(shí)要通過(guò)實(shí)戰(zhàn)才能看出來(lái),今天小編給大家?guī)?lái)一個(gè)python爬蟲(chóng)案例,采集回車(chē)桌面網(wǎng)站的美女圖片,大家可以在過(guò)程中查缺補(bǔ)漏,看看自己掌握程度怎么樣2021-10-10
Python增強(qiáng)賦值和共享引用注意事項(xiàng)小結(jié)
這篇文章主要給大家介紹了關(guān)于Python增強(qiáng)賦值和共享引用注意事項(xiàng)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Python?Asyncio庫(kù)之a(chǎn)syncio.task常用函數(shù)詳解
Asyncio在經(jīng)過(guò)一段時(shí)間的發(fā)展以及獲取Curio等第三方庫(kù)的經(jīng)驗(yàn)來(lái)提供更多的功能,目前高級(jí)功能也基本完善。本文主要介紹了Asyncio庫(kù)中asyncio.task常用函數(shù)的使用,需要的可以參考一下2023-03-03
python實(shí)現(xiàn)將視頻按幀讀取到自定義目錄
今天小編就為大家分享一篇python實(shí)現(xiàn)將視頻按幀讀取到自定義目錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12

