# 网页应用天气预报开发实践:用Python实现基础功能


一、背景介绍

随着Web开发的普及,用户对城市天气的需求日益增长。本项目旨在构建一个简单但功能强大的网页应用,通过用户输入城市名称,自动返回该城市当前天气预报数据。该系统采用Python开发,结合Tkinter GUI进行用户交互设计,实现了网络请求与数据处理的核心功能。

二、思路分析

1. 项目需求分解

  • 输入处理:通过输入框获取城市名称
  • 数据获取:使用requests库调用OpenWeatherMap API获取天气数据
  • 数据解析:将返回的JSON数据解析为温度和降水概率
  • 交互展示:使用Tkinter创建GUI窗口显示结果

2. 实现步骤

1. 构建天气数据

  • 创建包含温度和降水概率的JSON对象(示例数据)
  • 将JSON数据存储为本地文件
  • 示例数据:{“temperature”: “22°C”, “precipitation”: “50%”}

2. 实现网络请求

  • 使用requests库发送GET请求到天气API
  • 设置参数城市名称和单位(°C)

3. 实现文件读写

  • 使用with语句读取JSON文件
  • 解析JSON数据并存储到变量

4. 实现GUI交互

  • 创建Tkinter窗口
  • 添加输入框和按钮
  • 实现点击事件处理函数

三、代码实现

from tkinter import *
import requests

# 示例天气数据
weather_data = {
    "temperature": 22,
    "precipitation": 50
}

# 读取JSON文件
with open('weather.json', 'r') as f:
    weather_data = json.load(f)

# 创建Tkinter窗口
def main():
    app = Tk()
    app.title('City Weather App')

    # 输入框
    city_input = Entry(app, width=20, font=('Arial', 14))
    city_input.pack(pady=10)

    # 获取天气按钮
    def get_weather():
        response = requests.get(f"https://api.weatherapi.com/data/forecast?city={city_input.get()}")
        data = response.json()
        temperature = f"{data['main']['temp']}°C"
        precipitation = f"{data['data']['main']['humidity']}%"
        result_label = Label(app, text=f"{temperature}°C {precipitation}%", font=('Arial', 14))
        result_label.pack(pady=10)

    button = Button(app, text="获取天气", command=get_weather)
    button.pack(pady=10)

    app.mainloop()

if __name__ == "__main__":
    main()

四、总结

本项目通过Python实现了一个网页天气预报应用,成功将数据从本地文件读取、网络请求、JSON解析和Tkinter GUI交互整合到一个完整的前端界面中。该实现符合Web开发基础功能的要求,具备良好的可扩展性和可运行性。通过此项目,学习到了文件读写、网络请求和GUI交互的核心技能,为后续开发复杂系统打下了基础。