首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只有在条件为真时才在python中使用Eel调用JavaScript函数

只有在条件为真时才在python中使用Eel调用JavaScript函数
EN

Stack Overflow用户
提问于 2021-10-27 04:48:44
回答 1查看 495关注 0票数 1

描述了我试图调用JavaScript函数时遇到的问题,但只有当if条件在JavaScript中计算为True时才会这样做。我正在用player和Eel开发一个音乐播放器项目,我想调用JS函数来自动更改歌曲封面图像,而不需要在前面的歌曲结束时点击按钮,在我想调用'eel.fine()‘的时候,在python中使用eel.fine(),但是我确定它为什么不能工作,或者如何作为Eel的新手来完成这个任务。

期望当条件变为真函数时,应该从python代码调用find,也就是说,当一首歌结束时,只想更改代码片段,,这里有一些代码可以很容易地用于再现问题或理解我需要帮助的内容。注意:为了理解,我删除了大部分代码,只添加了与我需要帮助的代码流相关的部分。

代码语言:javascript
运行
复制
import eel
from pygame import mixer

eel.init('web')


js='function $fine(){document.getElementById("spl").live("click");}'
def my_update():
    if pausev and not fine:
        if not start and not mixer.music.get_busy():
            #ok=js2py.eval_js(js)
            # ok()
            print("booom")
            eel.fine()  # This is the part I need help with
            play()
            print('new song up')
        else:
            print('old playing still')
    else:
        print('strictly paused')
代码语言:javascript
运行
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="description" content="">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Aishu's Magic-Music</title>
    <link href="style.css" rel="stylesheet">
    <script type="text/javascript" src="/eel.js"></script>
    <script type="text/javascript" src="main.js"></script>
    <script type="text/javascript">
        eel.expose(fine);
      function fine(){
      document.getElementById("spl").live("click");

      }
    </script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js" type="text/javascript"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
</head>

<body>
    <section class="wellcome_area clearfix" id="home">
      <div class="container h-100">
            <div class="row h-100 align-items-center">
                <div class="col-12 col-md">
                    <div class="get-start-area">
                        <form class="form-inline">
                            <input type="button" id="repeat" class="submit" value="▶ Shower" onclick="generateQRCode(7)">
                            <input type="button" id="spl" class="submit" value="▶ Play" onclick="generateQRCode(2)">
                            <input type="button" class="submit" value=">> Skip" onclick="generateQRCode(3)">
                        </form>
                    </div>
                </div>
            </div>
        </div>
        <div class="welcome-thumb ">
            <img id="qr" class="headshot headshot-1" src="img/bg-img/play.jpg" width="50%">
        </div>
    </section>

</body>
</html>
代码语言:javascript
运行
复制
// main.js
var whatever=1;
var loop_check=1;
function generateQRCode(data) {
    if(data==2){
    change()
     if(whatever==1){
        eel.generate_qr(1)(setImage);
        whatever=0;
    }
    else
    {
        eel.generate_qr(data)(setImage)

    }
    }
    else if(data==7){
    change_loop()
    eel.generate_qr(data)(setImage)
    }
    else{
    eel.generate_qr(data)(setImage)
    }
}
function change() 
{
    var elem = document.getElementById("spl");
    if (elem.value=="|| Pause") elem.value = "▶ Play";
    else elem.value = "|| Pause";

}
function setImage(base64) {
    document.getElementById("qr").src = base64
}

更新它部分工作,但不像预期的那样工作

是在正常运行过程中遇到的错误。

而当我打开检查控制台时的输出

桌面:

Windows

  • Browser chrome

  • Version 94
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-27 08:29:56

在经历了大量的尝试和错误之后,我已经解决了这个问题,因为我刚接触过JavaScript、Eel,并与Python进行了连接,我后来才意识到在我的代码中,我尝试使用

代码语言:javascript
运行
复制
document.getElementById("spl").live("click");

代码语言:javascript
运行
复制
document.getElementById("spl").trigger("click");

当我用

代码语言:javascript
运行
复制
document.getElementById("spl").click();

之前没有公开JavaScript函数,因此当我在公开之后再次尝试使用.click()时,我意识到这是我一直缺少的。虽然在没有鳗鱼的JavaScript中,正如所述的那样,herehere的工作原理大致相同,但由于某些原因,Eel在使用Eel时只会在调试器中造成这种奇怪的暂停,如果不是,则会创建websocket错误。

很高兴我终于找到了一种可行的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69732918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档