Eel入門還有一些案例

Eel入門還有一些案例

Eel 是一個 Python 庫,它允許 Python 程序通過簡單的 API 與網頁進行交互。它使用 WebSocket 協議來實現 Python 后端和 JavaScript 前端之間的實時通信。下面是關于 Eel 的用法、通信原理和使用場景的一篇博客文章。

Eel的基本原理

image-20240712105805701

Eel的基本原理可以分為以下幾個方面:

  1. WebSocket通信:WebSocket是一種網絡通信協議,它允許在用戶的瀏覽器和服務器之間建立一個持久的連接。Eel利用WebSocket實現前端和后端之間的實時、雙向通信。
  2. Python后端:Eel的后端使用Python編寫,可以執行復雜的邏輯和數據處理任務。Python代碼可以通過Eel提供的API來向前端發送數據和接收前端的事件。
  3. HTML/JS/CSS前端:Eel允許開發者使用標準的Web技術來創建用戶界面。HTML定義頁面的結構,CSS用于樣式設計,而JavaScript用于處理用戶交互和動態更新頁面內容。
  4. 動態內容更新:Eel的前端可以通過JavaScript調用后端Python函數,并將結果動態顯示在網頁上。同樣,前端也可以監聽用戶的交互事件,并將這些事件發送到后端進行處理。
  5. 跨平臺:由于Eel基于Web技術,因此它可以在任何支持現代Web瀏覽器的平臺上運行,包括Windows、macOS、Linux以及移動設備。
  6. 簡單易用:Eel旨在簡化Python GUI開發過程,使得開發者可以快速構建具有豐富交互性的應用程序,而無需深入了解底層的網絡通信細節。

eel + vue 實現一個python腳本

我先要實現如下效果,根據配置執行python腳本,并且輸出pyhton 腳本的日志。

image-20240712110800244

效果展示

GIF 2024-7-12 10-20-51

代碼講解

python代碼,main.py

  • 引入eel,配置web目錄,配置頁面入口,模式,然后啟動。
  • 定義暴露給js 的 python 函數 。
import eel
import os
import platform
import sys
import time#指定web文件的文件夾
eel.init("web")#暴露函數給 js的 eel 對象
@eel.expose
def py_start():print("開始執行")for i in range(100):#調用js方法eel.js_insertLog(f'這是python日志{i}')time.sleep(0.5)if sys.platform in ['win32', 'win64'] and int(platform.release()) >= 10:eel.start('index.html', mode='edge')
else:raise EnvironmentError('Error: System is not Windows 10 or above')

前端代碼 web/index.html

  • 使用vue + elementui來作為web的框架
  • 調用 python 暴露的方法
  • 定義暴露給python 用來在頁面上輸出日志的 js 方法
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>小紅書點贊</title><link rel="stylesheet" href="./reset.css"><link rel="stylesheet" href="https://unpkg.com/element-ui@2.15.13/lib/theme-chalk/index.css"><link rel="stylesheet" href="./index.css">
</head><body>
<div id="app"><el-container><el-header><h2>xxxx工具</h2></el-header><el-container><el-aside width="210px">目錄</el-aside><el-main><el-card class="form-box"><div class="title">腳本配置</div><el-form ref="form"label-position="left":model="form" label-width="80px"><el-form-item label="輸入框"><el-input style="width: 280px" v-model="form.name"></el-input></el-form-item><el-form-item label="點贊選項"><el-checkbox-group v-model="checkList"><el-checkbox label="1" disabled="">評論點贊</el-checkbox><el-checkbox label="2">頭像點贊</el-checkbox><el-checkbox label="3">背景頁點贊</el-checkbox></el-checkbox-group></el-form-item><el-form-item label="下拉框"><el-select v-model="form.region" placeholder="請選擇活動區域"><el-option label="區域一" value="shanghai"></el-option><el-option label="區域二" value="beijing"></el-option></el-select></el-form-item><el-form-item><el-button type="primary" @click="startPython()">開始執行python腳本</el-button></el-form-item></el-form></el-card><el-card class="log-box"><el-inputtype="textarea":rows="16"placeholder="請輸入內容"v-model="logTextarea"></el-input></el-card></el-main></el-container></el-container>
</div>
<script type="text/javascript" src="/eel.js"></script>
<script src="https://unpkg.com/vue@2.7.14/dist/vue.js"></script>
<script src="https://unpkg.com/element-ui@2.15.13/lib/index.js"></script>
<script>var vm = new Vue({el: '#app',data() {return {logTextarea: "",logArr: [],checkList: ['1'],form: {region: "shanghai"}};},methods: {startPython(){//調用python暴露的方法eel.py_start()}}})
</script><script type="text/javascript">//暴露給python 的js方法eel.expose(js_insertLog)function js_insertLog(log) {vm.logArr.unshift(log)vm.logTextarea = vm.logArr.join('\n');}</script>
</body>
</html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44575.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44575.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

針對vue3的render函數添加自定義指令

話不多說 直接上代碼 主要是給h函數設置自定義指令控制 import /styles/reset.css import /styles/global.scss import uno.cssimport { createApp } from vue import App from ./App.vue import { setupRouter } from ./router import { setupStore } from ./store import …

Android studio之編譯提示Could not find :umeng-asms-v1.2.1

1 、問題 Could not determine the dependencies of task :app:compileDebugJavaWithJavac. > Could not resolve all task dependencies for configuration :app:debugCompileClasspath.> Could not find :umeng-asms-v1.2.1:.Required by:project :app> Could not …

FGF14:腦部疾病新潛力靶標

成纖維細胞生長因子14&#xff08;FGF14&#xff09;是FGF11亞家族成員&#xff0c;在神經元的所有基本特性&#xff08;內在放電、興奮性和抑制性神經元的突觸傳遞和可塑性&#xff09;中發揮作用。 &#xff08;數據來源AlphaFold&#xff09; FGF14由247個氨基酸組成&#x…

實戰篇(九):解鎖3D魔方的秘密:用Processing編程實現交互式魔方

解鎖3D魔方的秘密:用Processing編程實現交互式魔方 使用 Processing 創建一個 3D 魔方效果展示1. 安裝 Processing2. 項目結構3. 代碼實現4. 代碼解釋4.1. 初始化魔方4.2. 繪制魔方4.3. 處理鼠標事件4.4. 檢查點擊的面4.5. 旋轉面和最終確定旋轉5. 運行和測試6. 細節解釋6.1. …

【資源調度】2-如何解決資源調度問題?

導讀&#xff1a;本期是全網最全【資源調度】系列推文的第2期(共50期左右)。上期我們在《何為調度&#xff1f;》中&#xff0c;對調度的定義與作用、計劃與調度的關系、調度問題的拆解做了詳細介紹。從本期開始&#xff0c;我們選擇【客服調度】場景作為【資源調度】問題的具象…

51單片機(STC8H8K64U/STC8051U34K64)_RA8889_8080參考代碼(v1.3)

硬件&#xff1a;STC8H8K64U/STC8051U34K64 RA8889開發板 硬件跳線變更為并口8080模式&#xff0c;PS00x&#xff0c;R143&#xff0c;R142不接&#xff0c;R141無關 8080接口電路連接圖&#xff1a; 實物連接圖&#xff1a; RA8889開發板外接MCU連接器之引腳定義&…

IMS架構中的注冊與會話流程:RTPEngine集成及消息路由詳解

目錄 S-CSCF 調用 RTPengine 整體路由 注意 IMS 注冊流程 和 IMS 會話流程 的區別 IMS注冊流程 IMS會話流程(如INVITE請求) 這種設計的原因 P-CSCF 調用 RTPengine S-CSCF 調用 RTPengine 整體路由 UA a生成SDP offer&#xff0c;發送SIP INVITE請求(包含SDP offer)&…

核密度估計KDE和概率密度函數PDF(深入淺出)

目錄 1. 和密度估計&#xff08;KDE&#xff09;核密度估計的基本原理核密度估計的公式核密度估計的應用Python中的KDE實現示例代碼 結果解釋解釋結果 總結 2. 概率密度函數&#xff08;PDF&#xff09;概率密度函數&#xff08;PDF&#xff09;是怎么工作的&#xff1a;用圖畫…

RDNet實戰:使用RDNet實現圖像分類任務(二)

文章目錄 訓練部分導入項目使用的庫設置隨機因子設置全局參數圖像預處理與增強讀取數據設置Loss設置模型設置優化器和學習率調整策略設置混合精度&#xff0c;DP多卡&#xff0c;EMA定義訓練和驗證函數訓練函數驗證函數調用訓練和驗證方法 運行以及結果查看測試完整的代碼 在上…

ubuntu顯卡驅動重啟后失效的解決辦法

寫在前方&#xff1a;ubuntu系統&#xff0c;顯卡重啟后驅動失效&#xff0c;顯卡不可用。網上沖浪之后得以有效解決&#xff0c;以下是解決方案 查看顯卡nvidia-smi&#xff1b;驅動失效消息&#xff1a; (base) rootnode:~# nvidia-smi NVIDIA-SMI has failed because it c…

AI大模型走進汽車車機,智駕將是未來

車機里的AI大模型在汽車行業中的應用越來越廣泛&#xff0c;主要體現在智能座艙和自動駕駛系統的深度融合上。通過將AI大模型應用于車機系統&#xff0c;可以實現更高智能化的人車交互體驗。AI大模型作為人工智能發展的核心引擎&#xff0c;正在成為汽車智能化發展的關鍵之一。…

基于顏色模型和邊緣檢測的火焰識別FPGA實現,包含testbench和matlab驗證程序

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 5.算法完整程序工程 1.算法運行效果圖預覽 (完整程序運行后無水印) 將FPGA仿真結果導入到matlab顯示結果&#xff1a; 測試樣本1 測試樣本2 測試樣本3 2.算法運行軟件版本 vivado2019.2 …

MySQL配置數據庫的連接命令

MySQL配置數據庫連接命令 在MySQL中&#xff0c;配置數據庫連接的命令涉及創建用戶、授予權限、配置主從復制等多個方面。以下是常用的命令及其用途&#xff1a; 創建用戶 創建一個新的數據庫用戶并為其設置密碼&#xff1a; CREATE USER usernamehost IDENTIFIED BY passwo…

mysql中的存儲過程

存儲過程的作用:有助于提高應用程序的性能。存儲過程可以不必發送多個冗長的SQL語句 廢話不說多&#xff0c;直接實操 ##實現num的相加 delimiter $$ CREATE PROCEDURE test1 () begindeclare num int default 0; -- 聲明變量,賦默認值為0select num20;end $$ delimiter ; …

計算機網絡高頻面試題

從輸入URL到展現頁面的全過程&#xff1a; 用戶在瀏覽器中輸入URL。瀏覽器解析URL&#xff0c;確定協議、主機名和路徑。瀏覽器查找本地DNS緩存&#xff0c;如果沒有找到&#xff0c;向DNS服務器發起查詢請求。DNS服務器解析主機名&#xff0c;返回IP地址。瀏覽器使用IP地址建立…

Kafka配置SASL認證

Kafka加密 Kafka認證方式 在本博客中我們使用SASL/PLAIN的方式來進行Kafka加密 環境準備 Kafka集群環境 請參考之前的Kafka集群搭建 kafka-broker1kafka-broker2 集群配置SASL/PLAIN認證 用戶校驗 修改server.properties 讓其支持Kafka的認證(每一個broker節點都需要修改這…

jail內部ubuntu apt升級失敗問題解決

在FreeBSD jail 里安裝啟動Ubuntu jammy系統&#xff0c;每次裝好執行jexec ubjammy sh進入Ubuntu系統后&#xff0c;執行apt update報錯。 這個問題困惑了好久&#xff0c;突然有一天仔細去看報錯信息&#xff0c;查看了(man 5 apt.conf) &#xff0c;才搞定問題。簡單來說就是…

MySQL 數據庫(基礎)- 函數

MySQL 數據庫&#xff08;基礎&#xff09;- 函數 介紹 函數 是指一段可以被另一段程序調用的程序或代碼。也意味著&#xff0c;這一段程序或代碼在 MySQL 中已經給我們提供了&#xff0c;我們需要做的就是在合適的業務場景調用對應的函數&#xff0c;完成對應的業務需求即可…

python的簡單爬取

需要的第三方模塊 requests winr打開命令行輸入cmd 簡單爬取的基本格式&#xff08;爬取百度logo為例&#xff09; import requests url"http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" resprequests.get(url)#回應 #保存到本地 with open(&…

中國物流信息軟件系統(WMS等)行業概覽,2027年將達到235.1億元

導語 大家好&#xff0c;我是社長&#xff0c;老K。專注分享智能制造和智能倉儲物流等內容。 新書《智能物流系統構成與技術實踐》人俱樂部 完整版文件和更多學習資料&#xff0c;請球友到知識星球【智能倉儲物流技術研習社】自行下載 這份文件是《2023年中國物流信息軟件系統行…