# 使用Python开发天气信息显示GUI程序


背景介绍

本项目旨在创建一个简单的GUI程序,通过Tkinter框架实现显示天气数据的功能。该程序要求用户输入城市名称和时间,点击”显示天气”按钮,即可获取实时天气信息。程序可本地运行,无需依赖外部服务,确保用户能够直接使用。

思路分析

  1. 核心功能:实现输入城市和时间的文本框,以及显示当前天气的按钮,确保输入数据的正确性和及时性。
  2. GUI设计:使用Tkinter创建窗口,通过Entry组件实现输入框,使用Button组件实现按钮功能,确保界面布局清晰。
  3. 本地运行:无需依赖任何服务器端环境,通过简单的Python代码即可运行,确保代码的可扩展性和可维护性。

代码实现

import tkinter as tk

def get_weather_data(city, time):
    # 示例天气数据,实际应调用外部服务获取实时数据
    current_temperature = f"{city} {time} 星期三"  # 示例数据
    weather = "晴"  # 示例天气信息
    return current_temperature, weather

class WeatherGUIApp:
    def __init__(self, root):
        self.root = root
        self.root.title("实时天气显示")
        self.root.geometry("400x200")

        self.create_widgets()

    def create_widgets(self):
        # 创建窗口标题和布局
        self.weather_label = tk.Label(
            self.root,
            text="当前温度:",
            font=("Arial", 14)
        )
        self.weather_label.pack(pady=10)

        self.city_entry = tk.Entry(
            self.root,
            width=20,
            font=("Arial", 12),
            justify=tk.LEFT
        )
        self.city_entry.pack(pady=10)

        self.time_entry = tk.Entry(
            self.root,
            width=20,
            font=("Arial", 12),
            justify=tk.LEFT
        )
        self.time_entry.pack(pady=10)

        self.weather_button = tk.Button(
            self.root,
            text="显示天气",
            font=("Arial", 12),
            command=self.show_weather
        )
        self.weather_button.pack(pady=10)

        self.result_label = tk.Label(
            self.root,
            text="当前温度:",
            font=("Arial", 14)
        )
        self.result_label.pack(pady=10)

        self.result_label = tk.Label(
            self.root,
            text="天气:",
            font=("Arial", 14)
        )
        self.result_label.pack(pady=10)

    def show_weather(self):
        city, weather = get_weather_data(self.city_entry.get(), self.time_entry.get())
        self.update_result_label(weather)

    def update_result_label(self, weather):
        result_label = tk.Label(
            self.root,
            text=f"当前温度:{weather}",
            font=("Arial", 14)
        )
        result_label.pack(pady=10)

if __name__ == "__main__":
    root = tk.Tk()
    app = WeatherGUIApp(root)
    root.mainloop()

总结

通过本项目的学习,我们掌握了Tkinter框架的基本使用方法,能够创建一个界面,实现输入城市和时间的功能,以及显示天气信息。项目要求具有明确功能目标,输入输出示例清晰,代码规范,可运行,且包含GUI设计的核心要素。本项目难度适中,1~3天可实现,展现了编程思维和GUI开发的能力。