如何解决python eel中多个javascript文件之间如何通信
我正在尝试使用 eel 制作 HTML 应用程序。在这个应用程序中,我有两个 javascript 文件,并希望在我的 python main.py 文件之间进行通信。它将从“show()”和“show2()”中获取一个字符串。“show()”中的字符串将进入我的“script.js”文件,“show2()”中的字符串将进入“script2” .js”。我可以从“show()”中获取字符串,但不能从 show2() 中获取字符串。只有一个 javascript 文件在工作,另一个不工作。有人可以帮我吗?
这是我的python“main.py”代码:
import eel
import time
import wikipedia
import socket
import os
import pyttsx3
import webbrowser
import datetime
import sound
engine= pyttsx3.init("sapi5")
en_id = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices\\Tokens\\TTS_MS_Cortana"
engine.setProperty("voice",en_id)
def say(audio):
engine.say(audio)
engine.runAndWait()
@eel.expose
def show(text):
user=text.lower()
if "hello" in user or "hey" in user:
ans="Hello,how can I help you?"
time.sleep(0.5)
eel.Boxes2(ans)
say(ans)
@eel.expose
def show2(text2):
print(text2)
eel.Boxes3("hello")
eel.init("eel")
eel.start("index.html",size=(460,660))
var nav=document.getElementById("content");
var textBox=document.getElementById("input");
var tag=document.createElement("i");
textBox.onclick=function(){
nav.style.display="none";
}
eel.expose(Boxes2);
function Boxes2(reply){
var tag=document.createElement("a");
var text=document.createTextNode(reply);
tag.appendChild(text);
var element=document.getElementById("Box2");
element.appendChild(tag);
}
function Boxes(){
var textBox=document.getElementById("input");
text= textBox.value;
eel.show(text)
var cover=document.createElement("p");
var tag=document.createElement("i");
var text=document.createTextNode(text);
tag.appendChild(text);
cover.appendChild(tag);
var element=document.getElementById("Box2");
element.appendChild(cover);
textBox.value="";
}
var sub = document.getElementById("send");
sub.onclick=function(){
Boxes();
Boxes2(reply);
}
这是我的“script2.js”。这是在 python eel 中不起作用的文件:
eel.expose(Boxes3)
function Boxes3(reply2){
eel.show2("bye")
var tag=document.createElement("p");
var text=document.createTextNode(reply2);
tag.appendChild(text);
var element=document.getElementById("Box2");
element.appendChild(tag);
}
var sub2 = document.getElementById("hello");
sub2.onclick=function(){
Boxes3(reply2);
}
这是我的 index.html 代码:
<!DOCTYPE html>
<html lang="en">
<head>
<Meta charset="UTF-8">
<Meta name="viewport" content="width=device-width,user-scalable=no">
<title>aurora</title>
<link rel="Icon" href="logo.ico" type="png" hreflang="en">
<link rel="stylesheet" href="style.css">
</head>
<body>
<div style="background-color: blanchedalmond; width: 500px; height: 30px; position: fixed; top: 0;">
<label id="options" title="options">...</label>
<button id="hello" >hello</button>
</div>
<div style="width: max-content; height: 630px; overflow-y: scroll; overflow-x: hidden;scroll-behavior: auto;">
<div id="Box2" style="width: 470px; height: max-content; margin-top: 35pt;margin-left: 20px;"></div>
</div>
<div id="content">
<label id="close" title="close">×</label>
<h1 style="font-family: segoe ui; position: relative; top: -50px;left: 10px; font-weight: 300;">aurora</h1>
<button style="width: 100%; font-size: 15pt; text-align: left; position: relative; top: 220pt; border:none; padding: 7pt;outline: none; " id="settings">Settings</button>
<button style="width: 100%; font-size: 15pt; text-align: left; position: relative; top: 220pt; border: none; padding: 7pt;outline: none; " id="settings">About</button>
<button style="width: 100%; font-size: 15pt; text-align: left; position: relative; top: 220pt; border: none; padding: 7pt;outline: none; " id="settings">Commands</button>
</div>
<div id="user-input">
<form>
<textarea id="input" placeholder="Ask me something" title="ask aurora"></textarea>
</form>
<button id="send" title="send text">Send</button>
</div>
<script src="eel.js"></script>
<script src="script.js"></script>
<script src="script2.js"></script>
</body>
</html>
请帮帮我!!!
解决方法
所有用@eel.expose 修饰的函数必须在 eel.init 和 eel.start 之间。
尝试使用以下行:
eel.init('eel',allowed_extensions=['.js','.html'])
这将在包含在 eel 文件夹中的所有 js 和 html 文件中查找公开的函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。