网易互客Mac版

网易互客Mac版:下载地址

现在越来越多的服务都只在web端提供,很少有人去开发原生的桌面应用。但桌面应用依然有它的便捷性,有什么办法把web服务封装成桌面应用呢?

以网易互客的SaaS服务为例,在浏览器中使用,通常会被其他tab干扰,或者容易误关。如果可以把它变成一个桌面应用就会方便许多。Python的UI框架有很多,Tkinter是最轻量级的,但它不支持WebEngine,所以我们选择PyQt来实现。首先通过homebrew安装PyQt:

1
$brew install 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
#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
Created by lc on 2020/09/08.
"""

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl, Qt
from PyQt5.QtGui import QIcon

if __name__ == '__main__':
QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) # Qt从5.6.0开始,支持High-DPI
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文件打包,最后的运行效果