网易互客Mac版:下载地址
现在越来越多的服务都只在web端提供,很少有人去开发原生的桌面应用。但桌面应用依然有它的便捷性,有什么办法把web服务封装成桌面应用呢?
以网易互客的SaaS服务为例,在浏览器中使用,通常会被其他tab干扰,或者容易误关。如果可以把它变成一个桌面应用就会方便许多。Python的UI框架有很多,Tkinter是最轻量级的,但它不支持WebEngine,所以我们选择PyQt来实现。首先通过homebrew安装PyQt:
然后通过简单的代码封装一个web页
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 """ Created by lc on 2020/09/08. """ import sysfrom PyQt5.QtWidgets import QApplication, QMainWindowfrom PyQt5.QtWebEngineWidgets import QWebEngineViewfrom PyQt5.QtCore import QUrl, Qtfrom PyQt5.QtGui import QIconif __name__ == '__main__' : QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) app = QApplication(sys.argv) w = QMainWindow() w.browser = QWebEngineView() w.browser.setUrl(QUrl("https://huke.163.com/login/" )) w.setCentralWidget(w.browser) w.setGeometry(100 , 100 , 1600 , 1200 ) w.setWindowTitle('网易互客' ) w.setWindowIcon(QIcon('huke.icns' )) w.show() sys.exit(app.exec_())
接着需要把它打包成一个可以随处运行的可执行程序。需要用到Pyinstaller,通过pip安装即可。
1 $ pip install pyinstaller
安装完以后,通过以下命令来打包
1 2 $ sudo pyinstaller --windowed --icon huke.icns --osx-bundle-identifier com.netease.huke --onedir huke.py --name 网易互客 $ sudo pyinstaller huke.spec
这样在dist目录下就可以找到最后的可执行程序了
如果你在高分辨率的屏幕上打开这个程序,会发现字体非常模糊。需要在spec文件中加上如下配置
然后重新对spec文件打包,最后的运行效果