from
tkinter
import
*
import
requests
import
json
import
datetime
from
PIL
import
ImageTk, Image
root
=
Tk()
root.title(
"Weather App"
)
root.geometry(
"450x700"
)
root[
'background'
]
=
"white"
new
=
ImageTk.PhotoImage(Image.
open
(
'logo.png'
))
panel
=
Label(root, image
=
new)
panel.place(x
=
0
, y
=
520
)
dt
=
datetime.datetime.now()
date
=
Label(root, text
=
dt.strftime(
'%A--'
), bg
=
'white'
, font
=
(
"bold"
,
15
))
date.place(x
=
5
, y
=
130
)
month
=
Label(root, text
=
dt.strftime(
'%m %B'
), bg
=
'white'
, font
=
(
"bold"
,
15
))
month.place(x
=
100
, y
=
130
)
hour
=
Label(root, text
=
dt.strftime(
'%I : %M %p'
),
bg
=
'white'
, font
=
(
"bold"
,
15
))
hour.place(x
=
10
, y
=
160
)
if
int
((dt.strftime(
'%I'
))) >
=
8
&
int
((dt.strftime(
'%I'
))) <
=
5
:
img
=
ImageTk.PhotoImage(Image.
open
(
'moon.png'
))
panel
=
Label(root, image
=
img)
panel.place(x
=
210
, y
=
200
)
else
:
img
=
ImageTk.PhotoImage(Image.
open
(
'sun.png'
))
panel
=
Label(root, image
=
img)
panel.place(x
=
210
, y
=
200
)
city_name
=
StringVar()
city_entry
=
Entry(root, textvariable
=
city_name, width
=
45
)
city_entry.grid(row
=
1
, column
=
0
, ipady
=
10
, stick
=
W
+
E
+
N
+
S)
def
city_name():
+
city_entry.get()
+
"&units=metric&appid="
+
api_key)
api
=
json.loads(api_request.content)
y
=
api[
'main'
]
current_temprature
=
y[
'temp'
]
humidity
=
y[
'humidity'
]
tempmin
=
y[
'temp_min'
]
tempmax
=
y[
'temp_max'
]
x
=
api[
'coord'
]
longtitude
=
x[
'lon'
]
latitude
=
x[
'lat'
]
z
=
api[
'sys'
]
country
=
z[
'country'
]
citi
=
api[
'name'
]
lable_temp.configure(text
=
current_temprature)
lable_humidity.configure(text
=
humidity)
max_temp.configure(text
=
tempmax)
min_temp.configure(text
=
tempmin)
lable_lon.configure(text
=
longtitude)
lable_lat.configure(text
=
latitude)
lable_country.configure(text
=
country)
lable_citi.configure(text
=
citi)
city_nameButton
=
Button(root, text
=
"Search"
, command
=
city_name)
city_nameButton.grid(row
=
1
, column
=
1
, padx
=
5
, stick
=
W
+
E
+
N
+
S)
lable_citi
=
Label(root, text
=
"..."
, width
=
0
,
bg
=
'white'
, font
=
(
"bold"
,
15
))
lable_citi.place(x
=
10
, y
=
63
)
lable_country
=
Label(root, text
=
"..."
, width
=
0
,
bg
=
'white'
, font
=
(
"bold"
,
15
))
lable_country.place(x
=
135
, y
=
63
)
lable_lon
=
Label(root, text
=
"..."
, width
=
0
,
bg
=
'white'
, font
=
(
"Helvetica"
,
15
))
lable_lon.place(x
=
25
, y
=
95
)
lable_lat
=
Label(root, text
=
"..."
, width
=
0
,
bg
=
'white'
, font
=
(
"Helvetica"
,
15
))
lable_lat.place(x
=
95
, y
=
95
)
lable_temp
=
Label(root, text
=
"..."
, width
=
0
, bg
=
'white'
,
font
=
(
"Helvetica"
,
110
), fg
=
'black'
)
lable_temp.place(x
=
18
, y
=
220
)
humi
=
Label(root, text
=
"Humidity: "
, width
=
0
,
bg
=
'white'
, font
=
(
"bold"
,
15
))
humi.place(x
=
3
, y
=
400
)
lable_humidity
=
Label(root, text
=
"..."
, width
=
0
,
bg
=
'white'
, font
=
(
"bold"
,
15
))
lable_humidity.place(x
=
107
, y
=
400
)
maxi
=
Label(root, text
=
"Max. Temp.: "
, width
=
0
,
bg
=
'white'
, font
=
(
"bold"
,
15
))
maxi.place(x
=
3
, y
=
430
)
max_temp
=
Label(root, text
=
"..."
, width
=
0
,
bg
=
'white'
, font
=
(
"bold"
,
15
))
max_temp.place(x
=
128
, y
=
430
)
mini
=
Label(root, text
=
"Min. Temp.: "
, width
=
0
,
bg
=
'white'
, font
=
(
"bold"
,
15
))
mini.place(x
=
3
, y
=
460
)
min_temp
=
Label(root, text
=
"..."
, width
=
0
,
bg
=
'white'
, font
=
(
"bold"
,
15
))
min_temp.place(x
=
128
, y
=
460
)
note
=
Label(root, text
=
"All temperatures in degree celsius"
,
bg
=
'white'
, font
=
(
"italic"
,
10
))
note.place(x
=
95
, y
=
495
)
root.mainloop()