Проблема возникает из-за того, что вызов
askdirectory() блокирует выполнение программы до тех пор, пока пользователь не выберет папку. Однако в вашем коде используется асинхронный JavaScript, поэтому нужно использовать асинхронную версию
askdirectory().
Для этого можно использовать библиотеку
aioify для превращения синхронных функций в асинхронные. Также нужно обновить метод
downdir() для использования асинхронной версии
askdirectory().
from tkinter.filedialog import askdirectory
from getpass import getuser
import eel
from aioify import aioify
eel.init("web")
downloadsPath = f"C:/Users/{getuser()}/Downloads"
# Превращаем функцию askdirectory() в асинхронную
async_askdirectory = aioify(askdirectory)
@eel.expose
async def downdir():
# Используем асинхронную версию askdirectory()
path = await async_askdirectory()
return path
@eel.expose
def defaultPath():
return downloadsPath
eel.start("index.html", size=(500, 800), mode="chrome")
async function defaultPath(){
let path = await eel.defaultPath()();
document.getElementById('tpd').textContent = path;
}
defaultPath();
async function downloadsDir(){
let dpath = await eel.downdir()();
return await dpath;
}
document.querySelector('#dl').onclick = async () => {
let path = await downloadsDir();
document.getElementById('tpd').textContent = path;
console.log("+")
}
Теперь вызов
askdirectory() не блокирует выполнение программы, и вы можете выбрать папку в диалоговом окне.