需求:把网站弄成独立程序样式(奇葩想法暂且不管)
解决方案:制作一个简易浏览器,再打包成exe程序
难点:PyQt5版本过高,PyQtWebEngine缺失,解决直接安装(有时会安装失败,多弄几次)
pip install PyQtWebEngine
完成程序:
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import QWebEngineView
from rw_ini import read_config
# 创建主窗口
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
rc = read_config("browser.ini")
browser_name = rc.get("browser", "name", fallback="chrome")
window_width = rc.get("browser", "window_width", fallback=None)
window_height = rc.get("browser", "window_height", fallback=None)
command_executor = rc.get("grid", "command_executor", fallback="http://www.baidu.com")
# 设置窗口标题
self.setWindowTitle(browser_name)
# 设置窗口大小1300*600
self.resize(int(window_width), int(window_height))
self.show()
self.webview = WebEngineView(self)
self.webview.load(QUrl(command_executor))
self.setCentralWidget(self.webview)
# 创建浏览器
class WebEngineView(QWebEngineView):
windowList = []
# 重写createwindow()
def createWindow(self, QWebEnginePage_WebWindowType):
new_webview = WebEngineView()
new_window = MainWindow()
new_window.setCentralWidget(new_webview)
# new_window.show()
self.windowList.append(new_window) # 注:没有这句会崩溃!!!
return new_webview
# 程序入口
if __name__ == "__main__":
app = QApplication(sys.argv)
# 创建主窗口
browser = MainWindow()
browser.show()
# 运行应用,并监听事件
sys.exit(app.exec_())
配置文件(读取配置文件方法前面文章有过介绍):
[local]
local_browser = False
wait_time = 10
[browser]
name = xxx系统
window_width = 1300
window_height = 600
[grid]
command_executor = http://www.baidu.com
headless = False
运行效果:
打包exe又出现问题,找不到QtWebEngineProcess.exe路径
解决办法:
1.dist\browser\PyQt5\Qt\bin和dist\browser\PyQt5\Qt\resources两个目录下的文件复制到dist\browser目录下
2.再把dist\browser目录打包成安装包