pywebview:使用python构建桌面客户端应用

前言

我编写了一些python程序,但我并不满足与只用命令行运行,我希望能构建一个具有界面的桌面客户端应用,来运行我python程序的各种功能。

作为一个前端工程师,我最熟悉的当然就是Electron,这是构建桌面应用最强大的利器。但Electron与python语言平台基本毫无关系,而且也比较重,Electron内置了V8引擎和Chrome内核,如果我只专注于编写python程序,这些也用不太上。

所以,再三考虑之后,我转战了pywebview

pywebview

官方文档:https://pywebview.flowrl.com/

这是一个可以使用前端技术编写GUI的python开源框架,它核心解决了两个问题:

  1. 提供跨平台的webview展示能力,这就可以轻松在程序中展示前端网页程序。
  2. 可以集成python的HTTP server,比如Flask。

以上两项能力,就将一个客户端的开发逻辑,转为了我们最熟悉的Web前后端分离开发逻辑。整个框架的API不多,属于轻量化的,只是搭建了一个桥梁,具体功能,用户可以以普通的Web开发方式实现。

实战思路

由于代码较多,我就不展示了,具体参考官方文档吧,这里总结下思路。

服务端

我们可以创建一个Flask服务器,即做接口服务,有又作为前端静态文件的转发服务。至于前端代码的构建。

前端

用前端的工具链构建就可以,比如React+Webpack。

打包与构建

程序成功运行之后,还需要考虑打包的成可执行文件的问题。这里用到了pyinstallerNSIS,pyinstaller负责打包成exe,NSIS负责构建安装包。这个过程比较难,尝试了很久,如果通关了,就可以把程序做成windows安装包了。

兼容性

构建完成后,去win7系统上运行,遇到了兼容性的问题。

  1. python版本需要降到3.8,pyinstaller打包完的程序才能执行。
  2. 前端页面需要兼容IE 11,win7系统的webview引擎默认是IE 11。

猜你喜欢

转载自blog.csdn.net/u010214511/article/details/128285188