python与Electron联合编程记录之九(Electron与Flask联合编程实现)

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

1、安装Axios包

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

npm i --save-dev axios

2、项目结构

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

3、index.html

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

<!DOCTYPE html>
<html lang="CN">
<head>
<!--    <meta charset="UTF-8">-->
<!--    &lt;!&ndash; https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP &ndash;&gt;-->
<!--    <meta content="default-src 'self'; script-src 'self'" http-equiv="Content-Security-Policy">-->
    <title>简单加法演示</title>
</head>
<body>
<div>
    请输入第一个数字:
    <input type="text" id="num_a">
</div>
<div>
    请输入第二个数字:
    <input type="text" id="num_b">
</div>
<div>

    <button type="button" id="btn_sum">计算两个数字之和:</button>
    <output id="summation"></output>
</div>
<script src="../js/renderer.js"></script>
</body>
</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 add

app = 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 result
    
if __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_b
    return {'result': result}

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Electron-Vue是一个基于Vue.js和Electron的框架,用于构建跨平台的桌面应用程序。它使用了Vue.js的组件化开发方式,可以快速搭建界面,并且可以使用Electron API来访问底层系统资源。 Python Flask是一个轻量级的Web开发框架,使用Python语言编写,它简洁而灵活,并提供了丰富的扩展库。Flask的设计哲学是只包含必要的功能,同时保持扩展性,使开发者可以根据自己的需要添加额外的功能。 结合这两个框架来进行Web开发,可以达到快速开发、高效与跨平台的目的。可以使用Electron-Vue构建一个桌面应用程序的前端界面,并通过Vue.js与Flask的后端进行交互。Vue.js负责前端界面的展示与交互逻辑,而Flask则负责处理前端请求、调用Python的业务逻辑,返回相应的数据给前端。 使用Electron-Vue构建的跨平台桌面应用程序,可以将PythonFlask作为后端服务进行部署。在开发过程中,可以使用Flask提供的路由、数据库等功能,使得Web开发更加高效。同时,由于Electron-Vue使用了前端的技术栈,比如HTML、CSS和JavaScript,它可以方便地与Flask的后端进行通信,并进行数据的传输和处理。 总而言之,通过结合Electron-Vue和Python Flask,我们可以开发出一个跨平台的桌面应用程序,它可以借助Vue.js的前端技术栈来实现丰富的界面交互,同时利用Flask的简洁、灵活和扩展性,来处理业务逻辑和后端服务。这种组合可以提高开发效率,并且可以在不同的操作系统上运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值