• pywebview3.0初探


      最近看python123的GUI项目推荐的时候,看到这个项目pywebview。pywebview 是一个轻量级的跨平台包装器,允许在自己的原生 GUI 窗口中展示HTML 内容。它使得你能在桌面应用程序中使用 web 技术,隐藏了 GUI 是基于浏览器的事实。你可以在 Flask 或 Bottle 这样的轻量级web框架中使用 pywebview,也可以在 Python 和 DOM 之间单独使用。

      可以看出pywebview具有以下特性的:跨平台的,web技术,还可以直接与js交互。
      对于有全干开发经验的pythoneer来说,这个库应该是极大的便利了GUI的编程实现。通过前端的组件和框架能够实现很好的界面效果,后台flask编写接口简单易用,搭配起来完美。
      然后,开始下载源码,测试例子。各个过程都很完美。然而,我还是太天真了。too yang too simple!在打包exe文件的时候就遇到问题了。

    1. 找不到dll文件。(这个还好解决,在GitHub上的issue找到了解决方案,直接把源码lib里面的dll复制到项目文件下。然后使用pyinstaller -w -F --add-data "WebBrowserInterop.x86.dll;./" --add-data "Microsoft.Toolkit.Forms.UI.Controls.WebView.dll;./" --add-data "Microsoft.Toolkit.Forms.UI.Controls.WebView.LICENSE.md;./" --onefile -y app.py 这条命令来打包项目。)
    2. 打包完成后,有50M这么大。(这个是环境包太多的问题,再开一个虚拟环境只安装需要的第三方包,打包后有6M)
    3. 在别的电脑不能打开。(打包后,在我的电脑上运行成功,但是在朋友的电脑上运行失败了,同样是win10 64位系统)

    打包官方的demo flask_app

      使用官方推荐的venv创建环境,打包出来的项目只有8M。这个大小还是可以接受的。但是遇到一个小问题,在pyinstaller打包项目的时候,添加-w参数隐藏控制台,打包出来的exe不能正常运行了。没有显示界面,只有在管理器上留下名字。找了百度、谷歌都是没有找到解决方案。就去了GitHub上,提了issue。这还是一个很活跃的项目。作者给我反馈了,一个相似问题的issue。这个issue很长,看得我都快蒙圈了。大概内容就是win10的安全机制导致,pyinstaller没有监控到控制台输出,直接结束控制台,把flask后台关闭了。作者认为这个问题应该是pyinstaller修复的,然后给了个代码,去绕过这个问题。以下代码,添加到运行文件开头就可以了。

    from contextlib import redirect_stdout
    from io import StringIO
    stream = StringIO()
    with redirect_stdout(stream):
            # something
    

      总的来说,pywebview包实际上非常整洁,我个人认为值得一看。如果你想要的东西更集成到你的桌面,尝试wxPython或PyQt会更好。但是,如果您只需要分发基于HTML5的Web应用程序,那么此软件包可能就是您的选择。同时对于全干的pythoneer来说,提供了很大的便利。同时作者也是一个牛人,我会继续持续关注这个项目的。

  • 相关阅读:
    洛谷-P1591 阶乘数码
    洛谷-P1328 生活大爆炸版石头剪刀布
    git的使用
    docker下载命令
    springboot学习笔记
    内部类被实例化才会被加载进内存测试
    springboot环境搭建遇到的问题
    Java多线程的锁机制
    spring JdbcTemplate学习
    多线程循环注意
  • 原文地址:https://www.cnblogs.com/aaronhua/p/11358051.html
Copyright © 2020-2023  润新知