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