代码拉取完成,页面将自动刷新
// 引入nodejs模块
const {app, BrowserWindow} = require('electron');
const path = require('path');
// 创建窗口函数
function createWindow() {
win = new BrowserWindow({ // 设置窗口option
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
contextIsolation: false, // 注意如果没有该选项,在renderer.js 中 require is not defined
enableRemoteModule: true
}
});
win.loadFile('index.html');// 窗口加载本地html
win.webContents.openDevTools(); // 打开开发者工具调试选项
}
// 启动flask server,通过python-shell 调用python脚本(开发调试阶段)
function startServer_PY() {
var {PythonShell} = require('python-shell');
let options = {
mode: 'text',
pythonPath: 'venv/Scripts/python'
};
PythonShell.run('./py/app.py', options, function (err, results) {
if (err) throw err;
// results is an array consisting of messages collected during execution
console.log('response: ', results);
});
}
// 启动flask server,通过子进程执行已经将python项目打包好的exe文件(打包阶段)
function startServer_EXE() {
let script = path.join(__dirname, 'pydist', 'app', 'app.exe')
pyProc = require('child_process').execFile(script)
if (pyProc != null) {
console.log('flask server start success')
}
}
// 停止flask server 函数
function stopServer() {
pyProc.kill()
console.log('kill flask server success')
pyProc = null
}
// 初始化函数
function initApp() {
startServer_EXE();
createWindow();
}
// electron ready 事件触发
app.on('ready', initApp);
// electron 窗口关闭事件触发
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
stopServer()
});
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。