IM_NIK
@IM_NIK

Не выводятся данные eel / pyowm?

Создавал приложение по уроку https://www.youtube.com/watch?v=Gon0MvppfF8&t=2s
Сделал всё точно по уроку но при нажатии на кнопку данные о погоде не выводились.
Через множество попыток нашёл и справил некоторые ошибки но программа всё равно не выводила информацию.
main.py
# imports
import eel 
import pyowm
# api key
owm = pyowm.OWM ( '80e8e723ef945c291f4661f5898f93e0',language = "RU" )
@eel.expose
def get_weather(place):
    mgr = owm.weather_maneger()
    #owm
    observation  = mgr.weather_at_place(city)
    w = observation.weather
    #temp
    Temp = w.get_temperature('celsius')['temp']
    #status
    Status = w.get_detailed_status()
    return "В городе "+city+'температура '+str(Temp) + Status

#eel
eel.init("web")
eel.start("main.html", size=(500 , 500))

main.html
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>find weather</title>
    <script src="eel.js"></script>
    <link rel="stylesheet" href="app.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.css">
    <link rel="icon" type ="image/png" href="weather-icon.png">
</head>
<body>
<div class="header">
    <img src="weather-icon.png" height="60px">
    <h2>find weather</h2>
</div>
<div class="form">
    <form>
        <input ip='location' class="enter" type="text" placeholder="Введите название города" value="москва">
    </form>
</div>
<div class="butt">
    <button id='show'>Найти</button>
</div>
<div id="info"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script type="text/javascript">
    async function display_weather(){
        let place = document.getElementById('location').value;
        
        let res = await eel.get_weather(place)();
        document.getElementById('info').innerHTML = res;
        }
        jQuery('#show').on('click',function(){
            //
            display_weather();
        });
    </script>
</body>
</html>
  • Вопрос задан
  • 514 просмотров
Решения вопроса 2
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
В файле main.html опечатка:
<form>
        <input ip='location' class="enter" type="text" placeholder="Введите название города" value="москва">
    </form>

вместо ip нужно id.

В файле main.py:
mgr = owm.weather_maneger()
скорее всего weather_manager
Также в main.py скорее всего нужно заменить в 2-х местах city на place.

PS: На практике проверить код не могу, так как у меня старая версия python3, следовательно, старая версия pyowm(там немного все по другому). Если что, пишите.
Ответ написан
IM_NIK
@IM_NIK Автор вопроса
Код после решения
main.py
# imports
import eel 
import pyowm
# api key
owm = pyowm.OWM ( '80e8e723ef945c291f4661f5898f93e0',language = "RU" )
@eel.expose
def get_weather(place):
    #owm
    observation = owm.weather_at_place(place)
    Observation = weather = observation.get_weather()
    #temp
    Temp = weather.get_temperature('celsius')['temp']
    #status
    Status = weather.get_detailed_status()
    return "В городе "+place+'температура '+str(Temp) + Status

#eel
eel.init("web")
eel.start("main.html", size=(500 , 500))

main.html
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>find weather</title>
    <script src="eel.js"></script>
    <link rel="stylesheet" href="app.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.css">
    <link rel="icon" type ="image/png" href="weather-icon.png">
</head>
<body>
<div class="header">
    <img src="weather-icon.png" height="60px">
    <h2>find weather</h2>
</div>
<div class="form">
    <form>
        <input id='location' class="enter" type="text" placeholder="Введите название города" value="москва">
    </form>
</div>
<div class="butt">
    <button id='show'>Найти</button>
</div>
<div id="info"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script type="text/javascript">
    async function display_weather(){
        let place = document.getElementById('location').value;
        
        let res = await eel.get_weather(place)();
        document.getElementById('info').innerHTML = res;
        }
        jQuery('#show').on('click',function(){
            //
            display_weather();
        });
    </script>
</body>
</html>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы