Как запустить другое окно с помощью eel python?

#javascript #python #html #eel

#javascript #python #HTML #eel

Вопрос:

Я создаю приложение с графическим интерфейсом, используя библиотеку eel на python. index.html содержит форму входа в систему, и если вход в систему прошел успешно, я хочу ее открыть retrieve.html .

Это мой код на python, и, пожалуйста, считайте вход в систему успешным.

 @eel.expose
def retrieve():
    eel.start('retrieve.html', size=(1000, 700))


eel.start('index.html', size=(1000, 700))
 

Это мой код javascript

 function login_func()
{
    var username = document.getElementById("username").value
    var pword = document.getElementById("pword").value
    eel.login(username, pword)(set_result)
}

function set_result(result)
{
    if(result == "Failed")
    {
        window.alert("Please insert correct username and password")
    }
    else
    {
        window.close()
        eel.retrieve()
    }
}
 

Все работает нормально, но я получаю сообщение об ошибке, и это

 OSError: [WinError 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted: ('localhost', 8000)
 

Как я могу избежать этого?

Ответ №1:

Используйте другой номер порта для 2-го окна, как указано ниже:

@eel.expose def retrieve(): eel.start('retrieve.html', size=(1000, 700), **port = 8080**)

eel.start(‘index.html ‘, размер=(1000, 700), порт = 8000)

или, в качестве альтернативы, проверьте это https://deecode.net/?p=438amp;lang=en

Ответ №2:

Вы не должны вызывать eel.start снова … это настроит новый локальный сервер, websockets и т. Д. В этом случае вы можете вызвать eel.show which повторно использует ваш существующий веб-экземпляр для отображения нового окна и страницы.

Так что измените свой код на что-то вроде:

 @eel.expose
def retrieve():
    eel.show('retrieve.html', size=(1000, 700))
 

Ответ №3:

Убедитесь, что ваш порт отличается для каждого окна