python与Electron联合编程记录之九(Electron与Flask联合编程实现)
创始人
2024-02-14 00:42:10
0

  前面铺垫了这么多,这一节就要真正的实现Electron与python联合编程。这一节我通过加法器这个简单的例子来演示如何真正实现Electron和Flask联合编程。

1、安装Axios包

  在终端工具选项卡中输入如下命令安装Axios包:

npm i --save-dev axios

2、项目结构

  项目结构如下图所示,python目录下的sum.py作为后端实现一个最基本的加法运算;server目录下的server.py作为Flask服务器。
在这里插入图片描述

3、index.html

   软件界面包括两个输入框、一个按钮还有一个输出框,输入框用来输入两个需要相加的数字,点击按钮后在按钮右边的输出框中会显示两个数字相加之和,代码如下:






简单加法演示


请输入第一个数字:
请输入第二个数字:

  界面如下:
在这里插入图片描述

4、preload.js

  预加载函数暴露两个api函数,electronAPI.summation以及electronAPI.summation_response,前者用于计算两个数字之和,后者用于将相加结果输出到界面的输出框中。

const { contextBridge, ipcRenderer } = require('electron');contextBridge.exposeInMainWorld('electronAPI',{summation: (options) => ipcRenderer.invoke('summation', options),summation_response: (callback) => ipcRenderer.on('summation-response', callback)})

5、renderer.js

  渲染函数通过预加载函数中的api实现所需功能。

document.getElementById('btn_sum').addEventListener('click',async ()=>{let num_a = document.getElementById('num_a').value;let num_b = document.getElementById('num_b').value;let options = {method:'post',url:'http://127.0.0.1:5000/summation',//headers:{'Content-Type': 'application/json'},data:{numa:num_a,numb:num_b}}await window.electronAPI.summation(options)
})
window.electronAPI.summation_response((event, result) => {document.getElementById('summation').value = result
})

6、main.js

const {app, BrowserWindow, ipcMain} = require('electron');
const path = require('path');
const axios = require('axios'); //request请求库
let win = null;function createWindow () {win = new BrowserWindow({webPreferences: {preload: path.join(__dirname, 'preload.js'),}});win.loadFile('html/index.html').then(()=>{});
}
app.whenReady().then(() => {ipcMain.handle('summation', async (event,options)=>{await axios(options).then(function (response) {win.webContents.send('summation-response', response.data.result)}).catch(function (error) {console.log(error);})})createWindow();app.on('activate', function () {if (BrowserWindow.getAllWindows().length === 0) createWindow();});
});app.on('window-all-closed', function () {if (process.platform !== 'darwin') app.quit();
})

7、server.py

  路由函数调用sum.py后端函数实现相加功能,并将result作为response返回给

from flask import Flask, request
from python.sum import addapp = Flask(__name__)@app.route("/summation", methods=['POST'])
def summation():numa = int(request.json.get('numa'))numb = int(request.json.get('numb'))result = add(numa, numb)return resultif __name__ == '__main__':app.run(host='127.0.0.1', port=5000, debug=True)

8、sum.py

def add(num_a, num_b):result = num_a + num_breturn {'result': result}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...