我编写了一些python程序,但我并不满足与只用命令行运行,我希望能构建一个具有界面的桌面客户端应用,来运行我python程序的各种功能。
作为一个前端工程师,我最熟悉的当然就是Electron,这是构建桌面应用最强大的利器。但Electron与python语言平台基本毫无关系,而且也比较重,Electron内置了V8引擎和Chrome内核,如果我只专注于编写python程序,这些也用不太上。
所以,再三考虑之后,我转战了pywebview
。
这是一个可以使用前端技术编写GUI的python开源框架,它核心解决了两个问题:
以上两项能力,就将一个客户端的开发逻辑,转为了我们最熟悉的Web前后端分离开发逻辑。整个框架的API不多,属于轻量化的,只是搭建了一个桥梁,具体功能,用户可以以普通的Web开发方式实现。
由于代码较多,我就不展示了,具体参考官方文档吧,这里总结下思路。
我们可以创建一个Flask服务器,即做接口服务,有又作为前端静态文件的转发服务。至于前端代码的构建。
用前端的工具链构建就可以,比如React+Webpack。
程序成功运行之后,还需要考虑打包的成可执行文件的问题。这里用到了pyinstaller
和NSIS
,pyinstaller负责打包成exe,NSIS负责构建安装包。这个过程比较难,尝试了很久,如果通关了,就可以把程序做成windows安装包了。
构建完成后,去win7系统上运行,遇到了兼容性的问题。