Weather Forecast GUI V1 (Python)

I think I’ve started to get to grips with GUI windows in Python, so I’m now going to go back and rework my weather forecast so that it uses a GUI. My first attempt takes a longitude and latitude input from the user. Currently it outputs back to the Python shell, so I’ll need to sort that next 🙂

——

#!/bin/python3

#geektechstuff

#Weather Forecasting with a GUI

#libraries to import

import json, requests

from tkinter import *

#variables

LAT=”

LON=”

url=”

#create window

root = Tk()

#sets the windows title

root.title(“geektechstuff weather forecast”)

#sets windows width x height

root.geometry(“450×150”)

#frame to hold the labels / buttons

app = Frame(root)

app.grid()

#create label for the title

GTSWF_label = Label(app,text=”GeekTechStuff Weather Forecaster”)

GTSWF_label.grid(row=0, column=0)

#create label for the latitude and a text input box

Lat_label = Label(app,text=”Enter Latitude:”)

Lat_label.grid(row=1, column=0)

app.lat_ent=Entry(app)

app.lat_ent.grid(row=1,column=1)

#create label for the longitude and a text input box

Lon_label = Label(app,text=”Enter Latitude:”)

Lon_label.grid(row=2, column=0)

app.lon_ent=Entry(app)

app.lon_ent.grid(row=2,column=1)

#define actions for the buttons

#closes the window

def button_action():

    root.destroy()

#gets the weather forecast

def get_weather():

    LAT=app.lat_ent.get()

    LAT=str(LAT)

    LON=app.lon_ent.get()

    LON=str(LON)

    #calls on the API of openweathermap.org

    url=’http://api.openweathermap.org/data/2.5/forecast?lat=’+LAT+’&lon=’+LON+’&APPID=XXXXXXXXXXXXXXXX’

    url=str(url)

    response=requests.get(url)

    response.raise_for_status()

    #Loads the JSON

    weatherData=json.loads(response.text)

    w=weatherData[‘list’]

    print(w[0][‘dt_txt’])

    print(w[0][‘weather’][0][‘main’],’-‘,w[0][‘weather’][0][‘description’])

    #Converts Kevlin into Celsius, as I’m more of a celsius person

    temp_c=w[0][‘main’][‘temp’]

    temp_c=float(temp_c)

    temp_c=temp_c-273.15

    print(‘Average temp in celsius:’,temp_c)

    

#Add button

button_exit = Button(app,text=”Exit”, command=button_action)

button_exit.grid(row=4, column=0)

button_generate = Button(app,text=”Forecast”, command=get_weather)

button_generate.grid(row=4, column=1)

    

#start event loop – creates the window with the above labels and buttons

root.mainloop()

———

Welcome to GeekTechStuff

my home away from home and where I will be sharing my adventures in the world of technology and all things geek.

The technology subjects have varied over the years from Python code to handle ciphers and Pig Latin, to IoT sensors in Azure and Python handling Bluetooth, to Ansible and Terraform and material around DevOps.

Let’s connect