Python EEL: изменение метки кнопки во время выполнения скрипта

У меня есть скрипт, который компилирует кучу файлов из разных каталогов в один лист xlsx. Я создаю внешний интерфейс для этого, чтобы я мог поделиться им со своими коллегами, и, хотя у меня есть операторы печати по всему моему коду, я хочу получить некоторую обратную связь по моему GUI.

Мне нужна кнопка для изменения метки во время выполнения кода, вот что я попробовал:

function getstarted(){
    document.getElementById("buttonstart").value="Running...";
    eel.myfunc();
    document.getElementById("buttonstart").value="Done!";
}

Это, конечно, не работает, так как javascript не ждет, пока моя функция eel завершит обработку, чтобы снова изменить значение. Есть идеи? заранее спасибо

1 ответ

Решение

Если вы сделаете функцию асинхронной, вы можете попросить дождаться ответа от Eel.

async function getstarted(){
    document.getElementById("buttonstart").value="Running...";
    await eel.myfunc()();
    document.getElementById("buttonstart").value="Done!";
}

Если вы не хотите использовать асинхронный метод, другой вариант - поместить код, который запускается после, в другой метод, который Eel вызывает, когда это будет сделано.

function getstarted() {
    document.getElementById("buttonstart").value="Running...";
    eel.myfunc()(getstarted2);
}

function getstarted2() {
    document.getElementById("buttonstart").value="Done!";
}
Другие вопросы по тегам