PyWebIO
使用记录
相关文档
🎯项目视频1🎞
🎯项目视频2🎞
项目简介
- 之前写的一个测试程序使用百度识图API
识别图片信息
- 看到
PyWebIO
之后看着效果很好,就想着试着用一下。 - 加入
PyWebIO
之后的功能为(这样做到了应用的界面可视化):- 在浏览器:用户可以选择电脑上要识别的图片
- 调用百度图片识别API
- 在浏览器:将图片识别结果直观的展示出来
最终的效果是这样的:
PyWebIO
介绍
- 对于单个
Python应用
,使用PyWebIO
可以很方便的制作应用的界面及交互。之前一直想使用Python做一个应用交互界面,终于可以实现了。 - 使用
PyWebIO
还可以和Django
等服务端框架配合,输出一些数据可视化的网页能力。 - 因为
PyWebIO
使用浏览器作为数据输入和输出的工具,所以对不同浏览器应该有适配的问题。
和Html
网页的区别
PyWebIO
就是对Html
的封装,提供给Python
调用。Python的优点就是:简单,方便,所以很方便的可以使用Html功能。- 用
Html
+js
也可以实现应用的功能,代码可能多一点而已。页面框架的话可以使用BootStarp
等。 - 所以:功能都可以实现,一种就是
Python程序
(也可以打包成exe程序),另一种就是Html文件
。 如果将应用部署到服务器的话,就可以使用浏览器直接访问网址体验应用效果(这时候两者就保持了统一)。
项目中使用流程
1.pywebio
使用
- 使用
file_upload
方法上传图片img = file_upload("选择图片", accept="image/*", placeholder="浏览文件", required=True)
- 使用
put_image
方法将图片base64
数据展示出来img_bs = img['dataurl'] put_image(img_bs, width='200px')
- 使用
use_scope - clear()
实现显示loading
及隐藏效果with use_scope('pre-layout'): put_loading(shape='grow', color='primary') table_res = analysis(img_bs) time.sleep(3) clear()
- 使用
put_table
方法展示图片识别结果put_table(table_res)
- 使用
actions
实现按钮阻塞程序,等待用户点击后执行相应操作。用户点击【返回】再次进入程序入口。confirm = actions('', ['返回', '关闭'], help_text='') if confirm == '返回': start()
- 在程序中直接使用
pywebio
功能,可以直接执行代码中start()
方法即可。
2.Python
应用程序打包exe
应用
- 使用
pip3
安装pyinstaller
库 - 使用
start_server
方法使程序具有启动web服务
的功能,否则打开exe
应用后不可用。server = start_server(start, port=8089, auto_open_webbrowser=True, debug=True)
- 使用
pyinstaller -F baidu.py
命令就可以打包exe
应用,打开exe
程序同样报错。 需要添加pywebio.html到刚才生成的build/baidu/
目录下。- 这个
pywebio.html
文件是在启动本地Python应用程序后,在网页的网络请求中获取到的基础Html
。 可以理解为pywebio
的功能是在基础html
上通过js实现的。 - 关于这个问题可以查看
pywebio
库在github的issue里面的第二个内容。
- 这个
- 再次运行
pyinstaller -F baidu.py
命令后,打开exe
应用程序后功能正常。