pdf文档 PyWebIO v1.6.0 使用手册

1.72 MB 123 页 0 评论
语言 格式 评分
中文(简体)
.pdf
3
摘要
文档详细介绍了PyWebIO v1.6.0的使用方法,包括输入函数、输出函数、服务器-客户端通信协议以及与主流Web框架的集成。PyWebIO通过命令式API实现用户交互,简化了Web开发流程。输入函数如input、select等用于获取用户输入,支持多种表单类型。输出函数用于在浏览器显示内容,并支持动画和布局。服务器与客户端通过WebSocket或Http通信,支持Tornado、Flask、Django等框架的集成。文档还介绍了高级特性、第三方库生态及构建独立应用的方法。
AI总结
# 《PyWebIO v1.6.0 使用手册》总结 ## 1. 概述 PyWebIO 是一款支持通过简单的 Python 代码实现用户交互的库,旨在将浏览器变为“富文本终端”,适合快速构建对 UI 要求不高的 Web 应用或基于浏览器的 GUI 应用。PyWebIO 的特点包括: - 使用同步方式获取输入,代码逻辑自然。 - 非声明式布局,布局方式简单高效。 - 支持整合到现有的 Web 服务(如 Flask、Django、Tornado 等)。 - 同时支持基于线程和基于协程的执行模型。 - 支持结合第三方库实现数据可视化。 --- ## 2. 核心功能 ### 2.1 输入函数 PyWebIO 的输入函数定义在 `pywebio.input` 模块中,可以通过 `from pywebio.input import *` 引入。主要输入函数包括: - `input()`:文本输入,支持指定类型(如 `NUMBER`、`PASSWORD` 等)。 - `select()`:下拉选择。 - `checkbox()`:多选框。 - `radio()`:单选按钮。 - `textarea()`:多行文本输入。 - `file_upload()`:文件上传。 ### 2.2 输出函数 通过 `put_text()`、`put_image()`、`put_table()` 等函数可以向浏览器输出内容,并支持布局控制和动画效果。 ### 2.3 会话控制 - `start_server()`:启动服务。 - `remove(anchor)`:移除指定内容。 - `scroll_to(anchor, position)`:控制滚动位置。 --- ## 3. 通信协议 PyWebIO 采用服务器-客户端架构,支持两种通信方式: - **WebSocket 通信**:适用于 Tornado 或 aiohttp 后端,通过 WebSocket 连接发送 JSON 序列化的消息。 - **HTTP 通信**:适用于 Flask 或 Django 后端,通过轮询和提交表单进行交互。 通信中,服务器向客户端发送的数据称为 **command**,客户端向服务器发送的数据称为 **event**。 --- ## 4. 高级特性 - **动画与 UI 增强**:添加元素显示动画、footer 等提升用户体验。 - **测试与 CI**:支持添加测试用例,构建 CI 工作流。 - **跨域支持**:`start_server` 和相关函数添加跨域支持。 --- ## 5. 第三方库生态 - **数据可视化**:支持 Bokeh 等第三方库实现实时交互式数据可视化。 - **打包工具**:通过 PyInstaller 将应用打包为单独可执行文件或文件夹。 --- ## 6. 版本更新 ### 6.1 功能更新 - `input_group()` 添加 `cancelable` 参数,允许用户取消输入。 - `(actions()` 函数支持 `reset` 和 `cancel` 按钮类型。 - `put_image()` 和 `clear_range()` 支持锚点存在检查。 ### 6.2 BUG 修复 - 修复 `Session` 对象构造函数无法识别 `functools.partial` 处理的任务函数的问题。 - 会话关闭时清理更彻底,未完成的 PyWebIO 调用会抛出 `SessionClosedException` 异常。 --- ## 7. 平台集成 PyWebIO 支持与主流 Web 框架集成,如: - **Tornado**:通过 `webio_handler()` 绑定 WebSocketHandler。 - **Flask**:通过 Flask 路由直接运行 PyWebIO 应用。 - **Django**:将 PyWebIO 应用集成到 Django 视图中。 - **aiohttp**:通过 middleware 集成。 - **FastAPI/Starlette**:支持 ASGI 应用集成。 示例代码(Tornado 集成): ```python import tornado.ioloop import tornado.web from pywebio.platform.tornado import webio_handler class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") if __name__ == "__main__": application = tornado.web.Application([ (r"/", MainHandler), (r"/tool", webio_handler(task_func)), # 绑定 PyWebIO 应用 ]) application.listen(port=80, address='localhost') tornado.ioloop.IOLoop.current().start() ``` --- ## 8. 总结 PyWebIO 通过简单的命令式 API 实现了浏览器端的用户交互和输出,适合快速开发和轻量级应用。其支持丰富的输入输出功能、多种通信协议、主流 Web 框架集成以及第三方库拓展,使其成为一种高效的 Web 开发工具。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 116 页请下载阅读 -
文档评分
请文明评论,理性发言.