用 Python 开发交互式 Web 应用,So Easy

域名2025-11-05 13:48:252558

今天分享一个让开发交互式 Web app 超级简单的用Pb应用工具。不会 HTML,发交CSS,互式JAVASCRIPT 也没事。用Pb应用

交互式 Web app 非常实用,发交比如说做一个问卷调查页面、互式一个投票系统、用Pb应用一个信息收集表单,发交上传文件等等,互式因为网页是用Pb应用可视化的,因此还可以作为一个没有服务端的发交图片界面应用程序而使用。

如果你有这样的互式开发需求,那用 Python 真的用Pb应用是太简单了。

借助于 PyWebIO( pip install pywebio ),发交你可以分分钟实现网页的互式信息录入,可以看下面的动图:

上面的页面,也就仅仅用了这 6 行代码:

from pywebio.input import * input("This is a simple text input") select("This is a drop down menu", [Option1, Option2]) checkbox("Multiple Choices!", options=["a",b,c,d]) radio("Select any one", options=[1, 2, 3]) textarea(Text Area, rows=3, placeholder=Multiple line text input) 

要让网页输出想要的信息也是非常简单,代码如下,函数功能已经做了相关注释,b2b供应网你很容易看懂:

from pywebio.output import * from pywebio import session # 网页上显示纯文本 put_text("Hello friend!") # 网页上显示表格 put_table([     [Object, Unit],     [A, 55],     [B, 73], ]) # 网页上显示 MarkDown put_markdown(~~PyWebIO~~) # 网页上显示下载文件的链接 put_file(output_file.txt, bYou can put anything here) # 网页上显示图片 put_image(open(python_logo.png, rb).read()) # 网页上显示弹窗 popup(popup title, popup text content) # 保持回话是打开状态,否则页面显示完毕程序退出 session.hold() 

运行的效果如下:

以上,几行代码就实现了一个带有输入输出的 Web 应用,是不是很神奇?

构建基于浏览器的 GUI 程序

PyWebIO 提供了一系列命令式的交互函数来在浏览器上获取用户输入和进行输出,将浏览器变成了一个“富文本终端”,可以用于构建简单的 Web 应用或基于浏览器的 GUI 应用。

比如计算 BMI 指数的脚本:

from pywebio import start_server from pywebio.input import input, FLOAT from pywebio.output import put_text def bmi():     height = input("请输入你的身高(cm):", type=FLOAT)     weight = input("请输入你的体重(kg):", type=FLOAT)     BMI = weight / (height / 100) ** 2     top_status = [(14.9, 极瘦), (18.4, 偏瘦),                   (22.9, 正常), (27.5, 过重),                   (40.0, 肥胖), (float(inf), 非常肥胖)]     for top, status in top_status:         if BMI <= top:             put_text(你的 BMI 值: %.1f,身体状态:%s % (BMI, status))             break if __name__ == __main__:     start_server(bmi, port=80) 

效果:

更多示例:

基本 demo

聊天室 [1] : 和当前所有在线的人聊天 (不到 90 行代码实现)

Markdown 实时预览 [2] : 可以实时预览的在线 Markdown 编辑器 (不到 40 行代码实现)

在线五子棋游戏 [3] : 多人协作对战的五子棋游戏 (不到 100 行代码实现)

输入演示 [4] : 演示 PyWebIO 输入模块的用法

输出演示 [5] : 演示 PyWebIO 输出模块的用法

数据可视化 demo

PyWebIO 还支持使用第三方库进行数据可视化

使用 bokeh 进行数据可视化 [6]

使用 plotly 进行数据可视化 [7]

使用 pyecharts 创建基于 Echarts 的图表 [8]

使用 pyg2plot 创建基于 G2Plot 的图表 [9]

使用 cutecharts.py 创建卡通风格图表 [10]

数据可视化效果图:

与现有框架集成

PyWebIO 还可以方便地整合进现有的 Web 服务,源码库让你不需要编写 HTML 和 JS 代码,就可以构建出具有良好可用性的应用。目前支持与 Flask、Django、Tornado、aiohttp、FastAPI 框架集成。

比如说与 Tornado 应用整合:

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"/bmi", webio_handler(bmi)),  # bmi 即为上文计算BMI指数的函数     ])     application.listen(port=80, address=localhost)     tornado.ioloop.IOLoop.current().start() 

与 Django 整合:

# urls.py from django.urls import path from pywebio.platform.django import webio_view # `task_func` is PyWebIO task function webio_view_func = webio_view(task_func) urlpatterns = [     path(r"tool", webio_view_func), ] 

与更多框架的整合见 文档 [11]

最后

PyWebIO 使用同步而不是基于回调的方式获取输入,代码编写逻辑更自然,非声明式布局,布局方式简单高效,代码侵入性小,旧脚本代码仅需修改输入输出逻辑便可改造为 Web 服务,还可以整合到现有的主流 Web 框架。同时支持基于线程的执行模型和基于协程的执行模型,支持结合第三方库实现数据可视化,更多知识请阅读 官方文档 [12]

一句话,PyWebIO 让交互式的 Web 开发变得更加简单,特别适合开发简单的 GUI 程序及数据可视化。

云服务器提供商
本文地址:http://www.bzuk.cn/news/212f31599472.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

吸血鬼分尸(揭开吸血鬼的身世之谜,探寻其生物学奥秘与进化路径)

以note2加厚电池(创新技术助力手机续航,note2加厚电池一统江湖)

探索HD7650D显卡的性能和功能(了解AMDHD7650D显卡的性能特点及适用场景)

以摄影消费为主题的文章(摄影消费的趋势与实践)

你可能已经知道如何将你的 Ubuntu 桌面升级到最新版本了,不过假如你用的 Ubuntu Server,而且也正好又希望升级一下的话(前提是,不会影响你的应用。一般来说,对于服务器操作系统,应该采用保守态度。假如不是必须升级才能解决的安全问题,最好不要升级,而是采用各种外部手段来解决。)假如想从Ubuntu14.04/13.10/13.04/12.10/12.04或者更老的版本升级到14.10,只要遵循下面给出的步骤。注意,你不能直接从13.10升级到14.10。你应该先将13.10升级到14.04在从14.04升级到14.10。下面是详细步骤。下面的步骤不仅能用于14.10,也兼容于一些像Lubuntu14.10,Kubuntu14.10和Xubuntu14.10等的Ubuntu衍生版本重要:在升级之前,保险起见,不要忘了将你的数据在U盘或外部硬盘上保存一下。服务器升级从ubuntu14.04的服务器升级到14.10的服务器,采用下面的步骤。安装update-manager-core 这个包假如之前没唷安装的话:复制代码代码如下:sudo apt-get install update-manager-core编辑 /etc/update-manager/release-upgrades这个文件。复制代码代码如下:sudo nano /etc/update-manager/release-upgrades像下面那样设置Prompt=normal或者Prompt=lts复制代码代码如下:# Default behavior for the release upgrader. [DEFAULT] # Default prompting behavior, valid options: # # never - Never check for a new release. # normal - Check to see if a new release is available. If more than one new # release is found, the release upgrader will attempt to upgrade to # the release that immediately succeeds the currently-running # release. # lts - Check to see if a new LTS release is available. The upgrader # will attempt to upgrade to the first LTS release available after # the currently-running one. Note that this option should not be # used if the currently-running release is not itself an LTS # release, since in that case the upgrader wont be able to # determine if a newer release is available. Prompt=normal现在可以通过下面的命令来更新你的服务系统了。复制代码代码如下:sudo do-release-upgrade -d直到屏幕提示你已完成。

淫秽内容对人的心理健康的影响(探索淫秽对人类心理的冲击与后果)

iRobot飓风版(领先科技带来无与伦比的清洁体验)

探索奥巴镜头的独特魅力(揭秘奥巴镜头背后的故事)

友情链接

滇ICP备2023006006号-33