From 545ee5a188cb710b11518d977f450de038b77c60 Mon Sep 17 00:00:00 2001 From: pythonboi Date: Tue, 21 Feb 2023 17:53:58 -0500 Subject: [PATCH] added the api and temp --- Digital_Clock/clock.py | 0 Weather_app/Weather_App.py | 108 +++++++++++++++++++++++++++++++++++- Weather_app/box.png | Bin 0 -> 2615 bytes Weather_app/cloudLogo.png | Bin 0 -> 16491 bytes Weather_app/smallsearch.png | Bin 0 -> 728 bytes 5 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 Digital_Clock/clock.py create mode 100644 Weather_app/box.png create mode 100644 Weather_app/cloudLogo.png create mode 100644 Weather_app/smallsearch.png diff --git a/Digital_Clock/clock.py b/Digital_Clock/clock.py new file mode 100644 index 0000000..e69de29 diff --git a/Weather_app/Weather_App.py b/Weather_app/Weather_App.py index 6336fdb..ee7479c 100644 --- a/Weather_app/Weather_App.py +++ b/Weather_app/Weather_App.py @@ -1,4 +1,5 @@ from tkinter import * +import tkinter as tk from geopy.geocoders import Nominatim from tkinter import ttk, messagebox from timezonefinder import TimezoneFinder @@ -7,20 +8,121 @@ import requests import pytz - root = Tk() root.title("Weather App") -root.geometry("900x500") +root.geometry("900x600") root.resizable(False, False) +def getWeather(): + try: + city = textfield.get() + geolocator = Nominatim(user_agent="geoapiExercises") + location = geolocator.geocode(city) + obj = TimezoneFinder() + result = obj.timezone_at(lng=location.longitude, lat=location.latitude) + print(type(result)) + print(result) + + home = pytz.timezone(result) + local_time = datetime.now(home) + + current_time = local_time.strftime("%I:%M %p") + + cityName.config(text=city.upper()) + name.config(text="CURRENT WEATHER") + clock.config(text=current_time) + + # API from Weather + + apiKey = "https://api.openweathermap.org/data/2.5/weather?q=" + city + "&appid=d6e234f967558c4bb00121c136f07250" + + json_data = requests.get(apiKey).json() + print(json_data) + condition = json_data['weather'][0]['main'] + description = json_data['weather'][0]['description'] + temp = int(json_data['main']['temp'] - 273.15) + pressure = json_data['main']['pressure'] + humidity = json_data['main']['humidity'] + wind = json_data['wind']['speed'] + # + t.config(text=(temp, "°")) + c.config(text=(condition, "|", "FEELS", "LIKE", temp, "°")) + + w.config(text=wind) + h.config(text=humidity) + d.config(text=description) + p.config(text=pressure) + + except Exception as e: + messagebox.showerror("Weather App", "Invalid Entry!!!") + + # Creating the search box -search_image = PhotoImage(file="search2.png") +search_image = PhotoImage(file="search2.png", ) myImage = Label(image=search_image) myImage.place(x=20, y=20) +textfield = tk.Entry(root, justify="center", width=25, font=("poppins", 10, "bold"), bg="#404040", border=0, fg="white") +textfield.place(x=55, y=45) +textfield.focus() + +search_icon = PhotoImage(file="icons8-search-30.png") +myImage_icon = Button(image=search_icon, borderwidth=0, cursor="hand2", command=getWeather) +myImage_icon.place(x=250, y=40) + +# logo + +logo_image = PhotoImage(file="cloudLogo.png") +myLogo = Label(image=logo_image) +myLogo.place(x=10, y=100) + +# Bottom box +frameImage = PhotoImage(file="box.png") +myFrameBox = Label(image=frameImage) +myFrameBox.pack(padx=5, pady=5, side=BOTTOM) + +# Showing the name of the city and time + +name = Label(root, font=("arial", 15, "bold")) +name.place(x=600, y=50) + +cityName = Label(root, font=("Times New Roman", 25, "bold")) +cityName.place(x=600, y=100) + +clock = Label(root, font=("Helvetica", 20)) +clock.place(x=600, y=150) + +# label + +label1 = Label(root, text="WIND", font=("Helvetica", 15, 'bold'), fg="white", bg="#00bfff") +label1.place(x=100, y=420) + +label2 = Label(root, text="HUMIDITY", font=("Helvetica", 15, 'bold'), fg="white", bg="#00bfff") +label2.place(x=220, y=420) + +label3 = Label(root, text="DESCRIPTION", font=("Helvetica", 15, 'bold'), fg="white", bg="#00bfff") +label3.place(x=400, y=420) + +label4 = Label(root, text="PRESSURE", font=("Helvetica", 15, 'bold'), fg="white", bg="#00bfff") +label4.place(x=650, y=420) + +# for displaying the temperature and condition + +t = Label(font=("arial", 70, "bold"), fg="#ee666d") +t.place(x=400, y=150) +c = Label(font=("arial", 15, 'bold')) +c.place(x=400, y=250) +w = Label(text="...", font=("arial", 20, "bold")) # fg="#1ab5ef") +w.place(x=100, y=500) +h = Label(text="...", font=("arial", 20, 'bold')) +h.place(x=220, y=500) +d = Label(text="...", font=("arial", 20, "bold")) # fg="#1ab5ef") +d.place(x=400, y=500) +p = Label(text="...", font=("arial", 20, 'bold')) +p.place(x=650, y=500) root.mainloop() diff --git a/Weather_app/box.png b/Weather_app/box.png new file mode 100644 index 0000000000000000000000000000000000000000..278aefe5c7a242388b1aab776f6ac42676c71c5a GIT binary patch literal 2615 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 KMNUMnLSTX^j!n$~ literal 0 HcmV?d00001