#javascript #python #html #eel
#javascript #python #HTML #eel
Вопрос:
Я впервые пробую что-то с eel. У меня есть скрипт на python с некоторыми функциями, и я пытаюсь связаться с ними, используя @eel.expose
, но это выдает ошибку javascript — main.html:10 Uncaught TypeError: eel.startEncryption is not a function
вот мой код:
<head>
<title>Undefined</title>
<link rel="stylesheet" href="w3pro.css">
<script type="text/javascript" src="/eel.js"></script>
<script>
function startEncryption(mode){
massage = document.getElementById("massage").value;
code = document.getElementById("code").value;
string = eel.startEncryption(mode, massage, code);
document.getElementById("result").innerHTML = string;
}
</script>
</head>
<body>
<header class="w3-panel">
<h1>Vigenere Encryption</h1>
</header>
<div class="w3-panel">
<span>Message:<input type="text" id="massage"></span>
<br>
<span>Code:<input type="text" id="code"></span>
<br>
<span>Encrypted/Decrypted:<input type="text" id="result" readonly></span>
<br>
<input type="button" value="Encrypt" onclick="startEncryption(1)">
<input type="button" value="Decrypt" onclick="startEncryption(2)">
</div>
</body>
import eel
eel.init('C:\Users\Fantomas\Documents\Programming\cipher\web')
eel.start('main.html')
@eel.expose
def startEncryption(mode : int, message : string, code : string):
if mode == 1:
ciphertext = encryptMessage(code, message)
elif mode == 2:
ciphertext = decryptMessage(code, message)
return ciphertext;
У меня есть eel.js файл в моем каталоге
Комментарии:
1. поместите короткую версию вашего кода на python, которая является допустимой для выполнения.
2. есть и мой код на python
3. Поместите свой код на python, включая все части, связанные с eel, начиная с импорта и заканчивая запуском HTML-файла. Кроме того, основная часть HTML-кода содержит элементы
message
,code
, иresults
DOM.4. я добавил его туда
Ответ №1:
Модифицируйте свой:
import eel
eel.init('C:\Users\Fantomas\Documents\Programming\cipher\web')
@eel.expose
def startEncryption(mode : int, message : string, code : string):
if mode == 1:
ciphertext = encryptMessage(code, message)
elif mode == 2:
ciphertext = decryptMessage(code, message)
return ciphertext;
eel.start('main.html')
помещается eel.start('main.html')
после раскрытия всех общих функций.
Ищу ваши комментарии.
Удачи вам
Комментарии:
1. спасибо, это сработало, я не знал, что мне нужно было указать открытую функцию перед запуском приложения
Ответ №2:
Очевидно, что отсутствие eel.start в конце вашего кода часто вызывает проблему, но позиция eel.init не имеет никакого отношения к этой конкретной проблеме.
Я просто хотел сказать вам, что иногда проблема заключается не в самом коде py, а в той части, где вы импортируете eel в свой html-код, помните, eel.js всегда генерируется везде, где была указана ваша папка eel.init, поэтому при импорте вашего eel.js в вашем HTML-кодеУбедитесь, что он находится в этой конкретной папке
Например, если вы указали веб-папку в своем коде py:
PYTHON:
eel.init('web')
Затем, когда вы импортируете eel в html, он должен выглядеть следующим образом
<script src="./eel.js"></script>
ПРИМЕЧАНИЕ: здесь файл .html также находится в веб-папке, и поэтому eel.js импортируется из того же каталога.
Так что да, это часто случается (по крайней мере, для меня) Убедитесь, что вы не допустили ошибки при импорте eel.js в вашем HTML-коде.