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

#javascript #python #html #eel

#javascript #python #HTML #eel

Вопрос:

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

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

 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!";
}
  

Комментарии:

1. По какой-то причине метод async не работает, но второй работает идеально. Спасибо!

2. @the_clash_1976 убедитесь, что eel.myfunc()(); имеет два набора круглых скобок. Добро пожаловать!