-
Notifications
You must be signed in to change notification settings - Fork 0
/
Weather_App.py
125 lines (90 loc) · 3.42 KB
/
Weather_App.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
from tkinter import *
import tkinter as tk
from geopy.geocoders import Nominatim
from tkinter import ttk,messagebox
from timezonefinder import TimezoneFinder
from datetime import *
import requests
import pytz
from PIL import Image, ImageTk
root=Tk()
root.title("Weather App")
root.geometry("900x500+300+200")
#root.configure(bg="#57adff")
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)
home=pytz.timezone(result)
local_time=datetime.now(home)
current_time=local_time.strftime("%I:%M %p")
clock.config(text=current_time)
name.config(text="CURRENT WEATHER")
#weather
api="https://api.openweathermap.org/data/2.5/weather?q="+city+"&appid=da27610a17b993072960e47138f9810a"
json_data= requests.get(api).json()
#current
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"))
c.config(text=(condition,"|","FEELS","LIKE",temp,"°"))
w.config(text=(wind, "m/s"))
h.config(text=(humidity,"%"))
d.config(text=(description))
p.config(text=(pressure, "hPa"))
except Exception as e:
messagebox.showerror("Weather App","Invalid Entry..!!")
##icon
Logo_image=PhotoImage(file="logo.png")
logo=Label(image=Logo_image)
logo.place(x=150,y=100)
##Search box
Search_image=PhotoImage(file="search.png")
myimage=Label(image=Search_image)
myimage.place(x=20,y=20)
textfield=tk.Entry(root,justify='center',width=17,font=('poppins',25,'bold'),bg="#404040",border=0,fg="white")
textfield.place(x=50,y=40)
textfield.focus()
Search_icon=PhotoImage(file="search_icon.png")
myimage_icon=Button(image=Search_icon,borderwidth=0,cursor="hand2",bg="#404040",command=getweather)
myimage_icon.place(x=400,y=34)
#time
name=Label(root,font=("Arial",15,"bold"))
name.place(x=30,y=100)
clock=Label(root,font=("Helvitica",20))
clock.place(x=30,y=130)
##Bottom box
Frame_image=PhotoImage(file="box.png")
frame_myimage=Label(image=Frame_image)
frame_myimage.pack(padx=5,pady=5,side=BOTTOM)
##label
label1=Label(root,text="WIND",font=('Helvetica',15,'bold'),fg="white",bg="#1ab5ef")
label1.place(x=120,y=400)
label2=Label(root,text="HUMIDITY",font=('Helvetica',15,'bold'),fg="white",bg="#1ab5ef")
label2.place(x=225,y=400)
label3=Label(root,text="DESCRIPTION",font=('Helvetica',15,'bold'),fg="white",bg="#1ab5ef")
label3.place(x=430,y=400)
label4=Label(root,text="PRESSURE",font=('Helvetica',15,'bold'),fg="white",bg="#1ab5ef")
label4.place(x=650,y=400)
##
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"))
w.place(x=100,y=430)
h=Label(text="...",font=("Arial",20,"bold"))
h.place(x=270,y=430)
d=Label(text="...",font=("Arial",20,"bold"))
d.place(x=400,y=430)
p=Label(text="...",font=("Arial",20,"bold"))
p.place(x=650,y=430)
root.mainloop()