簡體   English   中英

僅當條件為 True 時才使用 Eel 在 python 中調用 JavaScript 函數

[英]Using Eel calling JavaScript function in python only when a condition is True

描述我試圖調用 JavaScript 函數但僅當在 Python 中 if 條件計算為 True 時的問題。 我正在使用 Pygame 和 Eel 進行音樂播放器項目,我想調用 JS 函數來自動更改歌曲封面圖像,而無需在上一首歌曲結束時單擊按鈕,這是使用 pygame.mixer.music.get_busy() 找到的在 python 中,當我想調用“eel.fine()”時,但我確定為什么它不起作用或如何完成這項工作,因為我是 Eel 新手

預期當條件變為真函數 find 應該從 python 代碼調用即只想在一首歌結束時更改封面圖像代碼片段這里有一些代碼可以很容易地用來重現問題或了解我需要什么幫助. 注意:我刪除了大部分代碼只是為了理解,只添加了與代碼流程相關的部分,我需要幫助。

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')


<!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>

// 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
  • 瀏覽器鍍鉻
  • 版本 94

經過大量的跟蹤和錯誤,我已經解決了它,因為我是 JavaScript、Eel 和 Python 的新手,后來我才意識到在我的代碼中,我嘗試使用

document.getElementById("spl").live("click");

document.getElementById("spl").trigger("click");

當我使用

document.getElementById("spl").click();

早些時候錯過了公開 JavaScript 函數,因此當我在公開后再次嘗試使用.click()時,我意識到這是我一直以來都錯過的。 雖然在沒有 Eel 的 JavaScript 中,正如此處此處所述,工作原理或多或少相同,但由於某種原因,當與 Eel 一起使用時,會產生這種奇怪的暫停,僅在調試器中會導致,否則會產生 websocket 錯誤。

很高興我終於能夠找到一種真正有效的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM