今天我分享一个工具,可以让开发交互式Web应用程序变得超级简单。没有HTML、CSS、JAVASCRIPT都可以。交互式网页应用非常实用,比如制作调查页面、投票系统、信息收集表、上传文件等。由于网页是可视化的,所以也可以在没有服务器的情况下作为图片界面应用。如果你有这样的开发需求,用Python真的很简单。借助PyWebIO(pipinstallpywebio),分分钟输入网页信息。你可以看到下面的动画:上面的页面只使用了这6行代码:frompywebio.inputimport*input("Thisisasimpletextinput")select("Thisisadropdownmenu",['Option1','Option2'])checkbox("MultipleChoices!",options=["a",'b','c','d'])radio("Selectanyone",options=['1','2','3'])textarea('TextArea',rows=3,placeholder='Multiplelinetextinput')让网页输出想要的信息也很简单,代码如下,函数功能已经做好了附上相关注释,大家可以轻松理解:frompywebio.outputimport*frompywebioimportsession#网页上显示的纯文本put_text("Hellfriend!")#网页上显示的表格put_table([['Object','Unit'],['A','55'],['B','73'],])#在网页上显示MarkDownputput_markdown('~~PyWebIO~~')#在网页上显示下载文件的链接put_file('output_file.txt',b'Youcanputanythinghere')#显示图片网页上put_image(open('python_logo.png','rb').read())#显示弹窗windowsonthewebpagepopup('popuptitle','popuptextcontent')#保持回复开启,否则页面显示后程序退出session.hold()。运行效果如下:上面几行代码实现了一个有输入有输出的web应用。是不是很神奇?构建基于浏览器的GUI程序PyWebIO提供了一系列Command式的交互函数来获取用户在浏览器上的输入输出,将浏览器变成“富文本终端”,可用于构建简单的Web应用程序或基于浏览器的GUI应用程序例如计算BMI指数的脚本:frompywebioimportstart_serverfrompywebio.inputimportinput,FLOATfrompywebio.outputimportput_textdefbmi():height=input("请输入您的身高(cm):",type=FLOAT)weight=input("请输入您的体重(kg):",type=FLOAT)BMI=体重/(身高/100)**2top_status=[(14.9,'很瘦'),(18.4,'瘦'),(22.9,'正常'),(27.5,'超重'),(40.0,'肥胖'),(float('inf'),'非常肥胖')]fortop,statusintop_status:ifBMI<=top:put_text('您的BMI值:%.1f,bodyStatus:%s'%(BMI,status))breakif__name__=='__main__':start_server(bmi,port=80)效果:更多示例:基本演示聊天室[1]:与当前在线的所有人聊天(不是最多90行代码)Markdown实时预览[2]:在线Markdown编辑器实时预览(不到40行代码实现)在线西洋双陆棋游戏[3]:多人协作西洋双陆棋游戏(不到40行代码实现)100行代码)InputDemo[4]:演示PyWebIO输入模块OutputDem的用法o[5]:演示使用PyWebIO输出模块数据可视化demoPyWebIO也支持第三方库进行数据可视化使用bokeh进行数据可视化[6]使用plotly进行数据可视化[7]使用pyecharts创建基于Echarts的图表[8]使用pyg2plot创建基于G2Plot的图表[9]使用cutecharts.py创建卡通风格的图表[10]数据可视化效果图:与现有框架集成PyWebIO也可以轻松集成到现有的web服务中,让你不用无需编写HTML和JS代码,就可以构建具有良好可用性的应用程序。目前支持与Flask、Django、Tornado、aiohttp、FastAPI框架集成。例如,要与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.pyfromdjango.urlsimportpathfrompywebio.platform.djangoimportwebio_view#`task_func`isPyWebIOtaskfunctionwebio_view_func=webio_view(task_func)url"olpatterns=[path(r"to,webio_view_func),]请参阅文档[11]以与更多框架集成。最后,PyWebIO使用同步而非基于回调的方法获取输入,代码编写逻辑更自然,非声明式布局,布局简单高效,代码侵入性更小。旧的脚本代码只需要修改输入输出逻辑就可以转化为Web服务,也可以集成到现有的主流Web框架中。同时支持基于线程的执行模型和基于协程的执行模型,支持结合第三方库进行数据可视化。更多知识请阅读官方文档[12]。总之,PyWebIO让交互式Web开发变得更加简单,特别适合开发简单的GUI程序和数据可视化。本文转载自微信公众号“Python7号”,可通过以下二维码关注。转载本文请联系Python七号公众号。
