Aplicación meteorológica en Python usando el módulo Tkinter

En este artículo, vamos a discutir cómo crear una aplicación meteorológica usando tkinter . La aplicación GUI nos dirá el clima actual de una ciudad en particular junto con los detalles de la temperatura y otros detalles. 

Módulos requeridos:

  • Tkinter: es una biblioteca de python incorporada para crear GUI usando el kit de herramientas tkinter .
  • Requests: es una biblioteca que ayuda a obtener los datos con la ayuda de la URL. Se puede instalar usando el siguiente comando:
pip install requests

Acercarse:

En primer lugar, tenemos que usar una API meteorológica para obtener los datos del sitio web Open Weather Map generando una clave API, y luego necesitamos crear un archivo de configuración para almacenar la clave. Y finalmente usando ese archivo de configuración en el script de python.

Pasos para generar una clave API:

  • Iniciar sesión en el mapa meteorológico abierto
  • Vaya a la sección API . Luego, en la sección Datos meteorológicos actuales , haga clic en el documento Api .
  • Ahora, en la sección Llamada API , tenemos el enlace de api.openweathermap.org/data/2.5/weather?q={city name}&appid={API key}
  • Haga clic en la clave API en el enlace que lo dirigirá a la página desde donde puede obtener la clave. La clave generada se ve así:

Pasos para crear el archivo de configuración:

  • Cree un archivo llamado config.ini.
  • Escriba aquí el nombre de la clave entre corchetes cerrados [gfg] .
  • Cree una clave variable (clave aquí ) y pegue la clave que copió como se muestra a continuación:

Pasos para crear el script de Python:

  • Importar módulos.

Python3

# import required modules
from configparser import ConfigParser
import requests
from tkinter import *
from tkinter import messagebox
  • Primero tenemos que hacer el cuerpo de la GUI con la ayuda de tkinter .

Python3

# create object
app = Tk()
  
# add title
app.title("Weather App")
  
# adjust window size
app.geometry("300x300")
  
# add labels, buttons and text
city_text = StringVar()
city_entry = Entry(app, textvariable=city_text)
city_entry.pack()
  
Search_btn = Button(app, text="Search Weather",
                    width=12, command=search)
Search_btn.pack()
  
location_lbl = Label(app, text="Location", 
                     font={'bold', 20})
location_lbl.pack()
  
temperature_label = Label(app, text="")
temperature_label.pack()
  
weather_l = Label(app, text="")
weather_l.pack()
  
app.mainloop()
  • Lea el archivo config.ini y luego cargue la clave y la URL en el programa.

Python3

# extract key from the 
# configuration file
config_file = "config.ini"
config = ConfigParser()
config.read(config_file)
api_key = config['gfg']['api']
url = 'http://api.openweathermap.org/data/2.5/weather?q={}&appid={}'
  • Cree una función getweather() para obtener el clima de una ubicación en particular.

Python3

# explicit function to get
# weather details
def getweather(city):
    result = requests.get(url.format(city, api_key))
      
    if result:
        json = result.json()
        city = json['name']
        country = json['sys']
        temp_kelvin = json['main']['temp']
        temp_celsius = temp_kelvin-273.15
        weather1 = json['weather'][0]['main']
        final = [city, country, temp_kelvin, 
                 temp_celsius, weather1]
        return final
    else:
        print("NO Content Found")
  • Función de búsqueda para que podamos obtener los detalles meteorológicos de salida.

Python3

# explicit function to
# search city
def search():
    city = city_text.get()
    weather = getweather(city)
      
    if weather:
        location_lbl['text'] = '{} ,{}'.format(weather[0], weather[1])
        temperature_label['text'] = str(weather[3])+"   Degree Celsius"
        weather_l['text'] = weather[4]
          
    else:
        messagebox.showerror('Error', "Cannot find {}".format(city))

A continuación el programa completo:

Python3

# import required modules
from configparser import ConfigParser
import requests
from tkinter import *
from tkinter import messagebox
  
# extract key from the
# configuration file
config_file = "config.ini"
config = ConfigParser()
config.read(config_file)
api_key = config['gfg']['api']
url = 'http://api.openweathermap.org/data/2.5/weather?q={}&appid={}'
  
  
# explicit function to get
# weather details
def getweather(city):
    result = requests.get(url.format(city, api_key))
      
    if result:
        json = result.json()
        city = json['name']
        country = json['sys']
        temp_kelvin = json['main']['temp']
        temp_celsius = temp_kelvin-273.15
        weather1 = json['weather'][0]['main']
        final = [city, country, temp_kelvin, 
                 temp_celsius, weather1]
        return final
    else:
        print("NO Content Found")
  
  
# explicit function to
# search city
def search():
    city = city_text.get()
    weather = getweather(city)
    if weather:
        location_lbl['text'] = '{} ,{}'.format(weather[0], weather[1])
        temperature_label['text'] = str(weather[3])+"   Degree Celsius"
        weather_l['text'] = weather[4]
    else:
        messagebox.showerror('Error', "Cannot find {}".format(city))
  
  
# Driver Code
# create object
app = Tk()
# add title
app.title("Weather App")
# adjust window size
app.geometry("300x300")
  
# add labels, buttons and text
city_text = StringVar()
city_entry = Entry(app, textvariable=city_text)
city_entry.pack()
Search_btn = Button(app, text="Search Weather", 
                    width=12, command=search)
Search_btn.pack()
location_lbl = Label(app, text="Location", font={'bold', 20})
location_lbl.pack()
temperature_label = Label(app, text="")
temperature_label.pack()
weather_l = Label(app, text="")
weather_l.pack()
app.mainloop()

Producción:

Publicación traducida automáticamente

Artículo escrito por abhisheksrivastaviot18 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *