前言
PyWebIO 是一个纯 Python 库,帮助开发者用最少的代码创建交互式网页应用,无需写任何 HTML/CSS/JS,适合快速开发小工具、教学演示和数据采集。
一、PyWebIO 简介
-
纯 Python,零前端经验门槛
-
支持输入输出控件:文本框、下拉、单选、多选、表格等
-
可直接用浏览器访问,无需前端框架
-
支持多种部署方式:本地、服务器、Docker
二、安装与启动
pip install pywebio
示例代码:
from pywebio.input import input, select
from pywebio.output import put_text
from pywebio import start_server
def main():
name = input("请输入你的名字")
gender = select("请选择性别", options=['男', '女', '保密'])
put_text(f"你好,{name},你选择了 {gender}")
if __name__ == '__main__':
start_server(main, port=8080)
浏览器访问 http://localhost:8080
三、丰富控件演示
-
input()
,textarea()
,checkbox()
,radio()
,select()
-
文件上传
file_upload()
-
输出文本、图片、表格
-
异步任务与进度条
示例:
from pywebio.input import input, textarea, checkbox
from pywebio.output import put_table
def survey():
name = input("请输入姓名")
hobbies = checkbox("请选择爱好", options=['看书', '运动', '游戏'])
put_table([
['姓名', name],
['爱好', ', '.join(hobbies)]
])
if __name__ == '__main__':
start_server(survey, port=8080)
四、部署方式
- 本地启动(
start_server
)
python app.py
- WSGI 兼容部署(gunicorn)
pip install gunicorn
gunicorn -w 4 app_wsgi:application # -w指定工作进程数
- 集成到 Flask / Django 中作为子模块
# app_flask.py
from flask import Flask, request
from pywebio.platform.flask import pywebio_app
from pywebio.input import input, select
from pywebio.output import put_text
app = Flask(__name__)
# 定义PyWebIO路由
@pywebio_app('/pywebio') # 访问路径为 /pywebio
def my_app():
name = input("请输入名字")
gender = select("选择性别", ['男', '女', '保密'])
put_text(f"你好,{name}({gender})")
# 可选:添加Flask原生路由
@app.route('/')
def index():
return "欢迎来到Flask首页!<a href='/pywebio'>进入PyWebIO应用</a>"
if __name__ == '__main__':
app.run(debug=True)
python app.py
# views.py
from django.http import HttpResponse
from pywebio.platform.django import pywebio_app
from pywebio.input import input, select
from pywebio.output import put_text
# 定义PyWebIO视图
@pywebio_app
def my_app(request):
name = input("请输入名字")
gender = select("选择性别", ['男', '女', '保密'])
put_text(f"你好,{name}({gender})")
return HttpResponse("PyWebIO会话已结束")
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('pywebio/', views.my_app, name='pywebio'),
path('', lambda r: HttpResponse("欢迎来到Django首页!<a href='/pywebio'>进入PyWebIO应用</a>"))
]
python app.py runserver
五、总结
优点 | 局限 |
---|---|
零前端门槛 | 不适合大型复杂项目 |
快速搭建交互界面 | 页面美观度有限 |
支持多种输入控件 | 灵活性有限,布局简单 |
一句话总结: PyWebIO 是快速原型和轻量级数据采集的神器,无需任何前端经验!