Данная статья описывает создание приложения для получения информации о погоде в разных городах с помощью библиотеки Python Flet и сервиса OpenWeatherMap. Приложение будет иметь интуитивно понятный интерфейс.
Подготовка проекта
Начнём с создания проекта. Импортируем библиотеку Flet, создадим функцию main и её вызов. Название проекта — «Погода», тема — «Dark», расположение элементов — вертикальное и горизонтальное центрирование. Создадим переменную для текстового поля (TextField) шириной 400 пикселей с подсказкой «Введите город».
import flet as ft
import requests
API_KEY = "YOUR_API_KEY" # Замените на ваш API ключ
def main(page: ft.Page):
page.title = "Погода"
page.theme_mode = ft.ThemeMode.DARK
page.vertical_alignment = ft.MainAxisAlignment.CENTER
page.horizontal_alignment = ft.MainAxisAlignment.CENTER
city_field = ft.TextField(width=400, hint_text="Введите город")
weather_data = ft.Text()
def get_info(e):
city = city_field.value
if len(city) < 2:
return
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}&units=metric"
try:
response = requests.get(url).json()
temp = str(response["main"]["temp"])
weather_data.value = f"Погода: {temp}°C"
page.update()
except (requests.exceptions.RequestException, KeyError):
weather_data.value = "Ошибка получения данных"
page.update()
def change_theme(e):
page.theme_mode = ft.ThemeMode.LIGHT if page.theme_mode == ft.ThemeMode.DARK else ft.ThemeMode.DARK
page.update()
page.add(
ft.Row(
controls=[
ft.IconButton(
icon=ft.icons.SUNNY,
on_click=change_theme,
),
ft.Text("Погодная программа"),
],
alignment=ft.MainAxisAlignment.CENTER,
)
)
page.add(
ft.Row(
controls=[
city_field,
ft.ElevatedButton(text="Получить", on_click=get_info),
],
alignment=ft.MainAxisAlignment.CENTER,
)
)
page.add(weather_data)
ft.app(target=main)
Получение данных о погоде и обработка ошибок
Для получения данных используется API OpenWeatherMap. Необходимо зарегистрироваться на сайте OpenWeatherMap и получить API ключ, указав его в переменной API_KEY. Функция get_info формирует URL-запрос, обрабатывает ответ и выводит температуру. Обработка ошибок добавлена для повышения стабильности приложения. Библиотека requests должна быть установлена (pip install requests).
Интерфейс пользователя
Интерфейс состоит из строки с кнопкой смены темы и названием приложения, строки с полем ввода города и кнопкой «Получить», а также элемента для отображения температуры. Все элементы выровнены по центру.
Созданное приложение получает информацию о погоде, используя библиотеку Flet и API OpenWeatherMap. Интерфейс прост и интуитивно понятен, предусмотрена смена темы. Функциональность может быть расширена добавлением отображения дополнительной информации о погоде (влажность, ветер и т.д.).