mirror of
https://github.com/Xevion/tkinter-mini-projects.git
synced 2025-12-05 23:16:36 -06:00
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
import json, os, sys
|
|
from tkinter import *
|
|
import requests as r
|
|
from functools import partial
|
|
|
|
api_url = 'http://api.openweathermap.org/data/2.5/weather?zip={},{}&appid={}'
|
|
file = open(os.path.join(sys.path[0], 'api_key.dat'), 'r')
|
|
key = file.read()
|
|
|
|
def fetch(zc, cc, api):
|
|
url = api_url.format(zc, cc, key)
|
|
response = r.get(url)
|
|
content = response.json()
|
|
return content
|
|
|
|
class App:
|
|
def __init__(self, master):
|
|
self.frame1 = Frame(master)
|
|
self.frame2 = Frame(master)
|
|
|
|
self.outputvar = StringVar()
|
|
self.zipvar = StringVar()
|
|
|
|
self.zipentry = Entry(self.frame1, textvariable=self.zipvar)
|
|
|
|
self.fetchbtn = Button(self.frame1, text="Fetch!", command=lambda:self.fetch(self.zipvar.get()))
|
|
self.output = Label(self.frame2, textvariable=self.outputvar, wraplength=300)
|
|
|
|
self.frame1.pack()
|
|
self.frame2.pack()
|
|
|
|
self.zipentry.pack(padx=5,pady=5)
|
|
self.fetchbtn.pack(padx=5)
|
|
self.output.pack()
|
|
|
|
def fetch(self, zipcode):
|
|
if zipcode == '': return None
|
|
content = fetch(zipcode, 'us', key)
|
|
if str(content['cod'])[0] != '2':
|
|
print('Unpredicted Status Code Found')
|
|
print(content)
|
|
print()
|
|
return None
|
|
self.outputvar.set(content['weather'])
|
|
root = Tk()
|
|
app = App(root)
|
|
root.mainloop() |