今天我分享一个工具,它可以让开发交互式Web应用变得超级简单。没有HTML、CSS、JAVASCRIPT都可以。交互式网页应用非常实用,比如制作调查页面、投票系统、信息收集表、上传文件等。由于网页是可视化的,所以也可以在没有服务器的情况下作为图片界面应用。如果你有这样的开发需求,用Python真的很简单。借助PyWebIO(pipinstallpywebio),分分钟输入网页信息。你可以看到下面的动画:上面的页面只使用了这6行代码:frompywebio.inputimport*input("Thisisasimpletextinput")select("Thisisadropdownmenu",['Option1','Option2'])checkbox("多选!",options=["a",'b','c','d'])radio("任选一个",options=['1','2','3'])textarea('TextArea',rows=3,placeholder='Multiplelinetextinput')让网页输出想要的信息也很简单。代码如下。function函数已经做了注释,可以很容易理解:frompywebio.outputimport*frompywebioimportsession#网页上显示明文put_text("Hellofriend!")#网页上显示表格put_table([['Object','Unit'],['A','55'],['B','73'],])#在网页上显示MarkDownput_markdown('~~PyWebIO~~')#网页上显示下载文件的链接put_file('output_file.txt',b'Youcanputanythinghere')#网页上显示图片put_image(open('python_logo.png','rb').read())#在网页上显示弹窗popup('popuptitle','popuptextcontent')#保持session打开,否则页面显示后程序退出session.hold()。运行效果如下:如上,几行代码就实现了一个有输入输出的web应用,是不是很神奇?构建基于浏览器的GUI程序PyWebIO提供了一系列命令式的交互函数来获取用户在浏览器上的输入和输出,将浏览器变成一个“富文本终端”,可以用来构建简单的Web应用程序或基于浏览器的GUI应用程序例如计算BMI指数的脚本:frompywebioimportstart_serverfrompywebio.inputimportinput,FLOATfrompywebio.outputimportput_textdefbmi():height=input("请输入你的身高(cm):",type=FLOAT)weight=input("请输入您的体重(kg):",type=FLOAT)BMI=weight/(height/100)**2top_status=[(14.9,'很瘦'),(18.4,'很瘦thin'),(22.9,'normal'),(27.5,'overweight'),(40.0,'obese'),(float('inf'),'veryobese')]top,statusintop_status:ifBMI<=top:put_text('你的BMI值:%.1f,bodystatus:%s'%(BMI,status))breakif__name__=='__main__':start_server(bmi,port=80)效果:更多例子:基本演示聊天室:与当前在线的所有人聊天(不到90行代码实现)Markdown实时预览:可实时预览的在线Markdown编辑器(不到40行代码实现)在线五子棋游戏:多人协作五子棋游戏(少于100行代码)我nputdemo:演示PyWebIO输入模块的用法Outputdemo:演示PyWebIO输出模块的用法数据可视化demoPyWebIO也支持第三方库进行数据可视化使用bokeh进行数据可视化使用plotly进行数据可视化使用pyecharts创建基于Echarts的图表使用pyg2plot来创建基于G2Plot的图表使用cutecharts.py创建卡通风格的图表框架集成PyWebIO还可以轻松集成到现有的Web服务中,让您无需编写HTML和JS代码即可构建具有良好可用性的应用程序。目前,它支持与Flask、Django、Tornado、aiohttp和FastAPI框架集成。例如,要与Tornado应用程序集成:importtornado.ioloopimporttornado.webfrompywebio.platform.tornadoimportwebio_handlerclassMainHandler(tornado.web.RequestHandler):defget(self):self.write("Hello,world")if__name__=="__main__":application=tornado.web.Application([(r"/",MainHandler),(r"/bmi",webio_handler(bmi)),#bmi就是上面计算BMI指数的函数])应用。listen(port=80,address='localhost')tornado.ioloop.IOLoop.current().start()与Django的集成:PyWebIOtaskfunctionwebio_view_func=webio_view(task_func)urlpatterns=[path(r"tool",webio_view_func),]与更多框架集成,见文末PyWebIO使用同步而非回调方式获取输入,代码编写逻辑更自然,非声明式布局,布局方式简单高效,代码侵入性小。旧的脚本代码只需要修改输入输出逻辑就可以转化为Web服务,也可以集成到现有的主流Web框架中。同时支持基于线程的执行模型和基于协程的执行模型,支持结合第三方库进行数据可视化。更多知识请阅读官方文档。总之,PyWebIO让交互式Web开发变得更加简单,特别适合开发简单的GUI程序和数据可视化。以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能领取大量学习资料。或者去编程学习网了解更多编程技术知识。
