PyWebIO使用记录

2,256 阅读3分钟

PyWebIO使用记录

相关文档

🎯项目视频1🎞

🎯项目视频2🎞

项目简介

  1. 之前写的一个测试程序使用百度识图API识别图片信息
  2. 看到PyWebIO之后看着效果很好,就想着试着用一下。
  3. 加入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应用程序后功能正常。

3.自己生成exe程序的ico图标

  • iconfont或其他网站获取一个喜欢的图片
  • bitbug网站将图片转换成icon图标,并且设置成16*16尺寸的。
  • 将上面生成的ico图标放到要打包的python程序的目录
  • 打包exe程序时,使用pyinstaller -F -i xxx.ico baidu.py就可以设置exe程序的图标了 效果是这样滴: