如何正确使用 Eel 将下拉值从 JavaScript 传递到 Python?
Posted
技术标签:
【中文标题】如何正确使用 Eel 将下拉值从 JavaScript 传递到 Python?【英文标题】:How to pass dropdown value from JavaScript to Python using Eel correctly? 【发布时间】:2021-09-16 05:10:13 【问题描述】:我正在使用 Python Eel 创建一个 GUI。
在这个 UI 中,我有一个下拉菜单。用户将选择下拉列表的值并提交,该下拉列表的值将反映在 Python 控制台中。
但我无法从 javascript 接收价值。
这是我的 Python 代码:
from random import randint
import eel
eel.init("web")
# Exposing the random_python function to javascript
@eel.expose
def random_python():
print("Random function running")
return randint(1,100)
@eel.expose
def getList():
lst = ["a","b","c","d"]
return lst
eel.spawn(eel.js_myval()())
eel.start("index.html")
这是我的 JavaScript:
let lst =document.getElementById("cate")
document.getElementById("submit").addEventListener("click",()=>
eel.expose(js_myval)// here i am using eel expose
function js_myval()
return lst.value;
)
这是我的html:
<select name="meesho_category" id="cate">
<option value="x">x</option>
<option value="x">a</option>
<option value="x">b</option>
</select>
阅读这些
Pass JavaScript Variable Value to Python with Eel
https://github.com/ChrisKnott/Eel
【问题讨论】:
请在提交之前尝试对您的作品进行拼写检查和大小写检查。 Stack Overflow 旨在成为未来读者的参考站点,因此默认情况下使其可读是最佳选择。尽管我们确实有志愿者编辑,但我们几乎没有足够的资源来修复每天发布的数千条帖子。 【参考方案1】:我将回答您关于将下拉值从 JavaScript 传递到 Python 的狭隘问题,并忽略与该问题无关的代码。
首先,让我们像这样重写您的 JavaScript,以便它专注于您的问题:
document.getElementById("btn-submit").addEventListener("click",()=>submit(), false);
function submit()
eel.on_submit(document.getElementById("cate").value)
该 JavaScript 代码为 btn-submit
按钮定义了一个点击处理程序,它将读取 cate
下拉列表的值并将其发送到 Python 代码。
接下来,让我们对 Python 文件进行同样的修剪:
import eel
eel.init("web")
@eel.expose
def on_submit(cate_dropdown_val):
print(f"cate val submitted: cate_dropdown_val")
eel.start("index.html")
此代码将 on_submit
函数从 Python 公开给 JavaScript。您会注意到它在上面列出的 submit
函数内的 JavaScript 块中被调用。
最后,让我们看看 HTML:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="eel.js"></script>
</head>
<body>
<select name="meesho_category" id="cate">
<option value="x">x</option>
<option value="a">a</option>
<option value="b">b</option>
</select>
<button id="btn-submit">Submit</button>
</body>
<script type="text/javascript" src="js/app.js"></script>
</html>
此 HTML 定义了cate
下拉元素、一个提交按钮,并导入了上面显示的eel.js
和自定义app.js
。
当应用程序运行时,用户点击提交按钮,Python 控制台会将cate
下拉列表的值打印到控制台。
从您示例中的其他代码来看,您似乎想要构建更多东西。请使用您可能需要的其他帮助打开一个新问题。
【讨论】:
非常感谢先生,太好了。可以给我鳗鱼的文档链接吗? 您可以在此处找到文档:github.com/ChrisKnott/Eel/blob/master/README.md以上是关于如何正确使用 Eel 将下拉值从 JavaScript 传递到 Python?的主要内容,如果未能解决你的问题,请参考以下文章
使用 location.href 将值从视图传递到控制器为 null