如何正确使用 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何在MVC C#中将文本框和下拉值从视图传递到控制器

使用 location.href 将值从视图传递到控制器为 null

如何将值从一个JFrame传递到另一个JFrame?

将下拉列表中的值从一个 php 传递到另一个

如何将值从 django 模板化 html 传递到 ajax

如何将简单值从 axios.post 发送到 asp.net 核心?