Добавить в корзинуПозвонить
Найти в Дзене
Я'ж Программист

Пишем Андроид приложение с ноля . Часть 2 Показываем погоду .

Приветствую вас , Марсиане ! Это вторая часть Тут мы добавим отображение погоды и изменение города. Погнали ! Погоду мы будем получать при помощи модуля PyOwm , его вы сможете найти на pypi , для работы с ним вам нужно будет зарегистрироваться на сайте open weather map( Используйте vpn ) , и получить там api для работы . Получив по почте api можно продолжать . Кстати , с последнего моего обращения к Pyowm там малость сменили синтаксис . И с этим связанна странная штука .Этот код я слепил из кусков из документации :
from pyowm.owm import OWM from pyowm.utils.config import get_default_config config_dict = get_default_config() config_dict['language'] = 'ru' # your language here owm = OWM('Регистрируйся сам', config_dict) mgr = owm.weather_manager() observation = mgr.weather_at_place('Хабаровск') w = observation.weather print(w.status) Вроде бы он должен выдать статус погоды ( облачно , солнечно и так далее ) на русском языке , НО : Где мой русский язык ? А вот давайте чуть поменяет

Приветствую вас , Марсиане ! Это вторая часть

Тут мы добавим отображение погоды и изменение города.

Погнали !

Погоду мы будем получать при помощи модуля PyOwm , его вы сможете найти на pypi , для работы с ним вам нужно будет зарегистрироваться на сайте open weather map( Используйте vpn ) , и получить там api для работы . Получив по почте api можно продолжать .

Кстати , с последнего моего обращения к Pyowm там малость сменили синтаксис . И с этим связанна странная штука .Этот код я слепил из кусков из документации :


from pyowm.owm import OWM
from pyowm.utils.config import get_default_config
config_dict = get_default_config()
config_dict['language'] = 'ru' # your language here
owm = OWM('Регистрируйся сам', config_dict)
mgr = owm.weather_manager()
observation = mgr.weather_at_place('Хабаровск')
w = observation.weather
print(w.status)

Вроде бы он должен выдать статус погоды ( облачно , солнечно и так далее ) на русском языке , НО :

Где мой русский язык ? А вот давайте чуть поменяет код :

-2

Ух ты блин , работает .

Ладно , продолжаем .

В прошлой части мы написали интерфейс (прототип) и добавили на задний план яблочко .

Сейчас нужно сделать возможность введения города при первом запуске , для этого будем использовать логи .

для этого в начало кода я добавил вот это :

-3

Тут мы создали переменные <a> и <log> . Они все равны нулю .

Затем с помощью конструкции < try ... except > я проверяю , существует ли файл с названием <file_log.txt> , если да , то переменную <a> увеличиваю на 1 , если нет , то ничего не делаю . Если <a> равна 0 , значит файл не существует , поэтому создаю его и записываю в него нолик . Ну а дальше открываю полюбому существующий файл и записываю его содержимое в переменную <log_from_file>

Ну а дальше идем в build .

-4

Если лог не равен нулю , то значит , что город указан , а значит просто загружаем kv файл . А если же равен , то значит , что город не указан , и надо его указать , кхм , сейчас сделаю это .

Но сначала , мы не будем создавать экранную клавиатуру из кнопок kivy , мы вызовем клавиатуру телефона .

Для этого на верху напишем это :

-5

Теперь когда у нас будет материализоваться экранная клавиатура точно можно продолжить .

В итоге получилось нечто такое :

-6

Я особо не заморачивался , поэтому просто использую Raise SystemExit

Попозже я придумаю более элегантное решение .

Ну а дальше идет GridLayout и показ погоды :

-7

В Gl я добавил кнопку для изменения города , кусок с PyOwm , чуть поправил , ну как поправил , полностью изменил вывод информации .

А снизу находятся функции для кнопки изменения города , кстати , мне кажется , что это интересное решение , добавить все нужное для изменения города в GridLayout к остальным кнопкам .

Вообщем , поправлять интерфейс и подцеплять KivyMd буду не сегодня .

Но хотя бы интерфейс уж точно завтра сделаю покрасивей , а пока , вот скрины результата :

Ну , а на этом я прощаюсь , увидимся завтра , и , раз уж вы дошли до сюда , то почему бы вам не поставить класс и не подписаться ?

А это полный код , кстати :

А вот тут я буду выкладывать текстовые файлы :

https://t.me/YaShProgrammist