首页 > 解决方案 > Tkinter 和请求:可以使用邮政编码获取天气

问题描述

from tkinter import *
import requests
import json

root = Tk()
root.geometry('400x400')


def searchbyzip():
        try:
            zipcode=zipentry.get()
            api_request = requests.get("http://www.airnowapi.org/aq/observation/zipCode/current/?format=application/json&zipCode="+zipcode+"10001&distance=5&API_KEY=2FF97EFB-2391-4403-9001-EA249EEDACDB")
            api = json.loads(api_request.content)
            city = api[0]['ReportingArea']
            quality=api[0]['AQI']
            category=api[0]['Category']['Name']

            if category == "Good":
                weather_color='"#0C0"'
            elif category == "Moderate":
                weather_color="#FFFF00"
            elif category == "Unhealthy for Sensitive Groups":
                weather_color="#FFFF00"
            elif category == "Unhealthy":
                weather_color="#FF0000"
            elif category == "Very Unhealthy":
                weather_color="#990066"
            elif category == "Hazardous":
                weather_color="#660000"

            root.config(bg=weather_color)
            apilabel = Label(root, text="City: "+city+'\n'+'Quality: '+str(quality)+"\n"+'Category: '+category, font=("Helvetica",20),bg=weather_color)
            apilabel.grid(row=2,column=0,columnspan=2)
        except Exception:
            api="No internet connection"
            errorlabel = Label(root,text=api)
            errorlabel.grid(row=0,column=0)

zipentry = Entry(root)
zipentry.grid(row=0,column=1,columnspan=2,pady=5)
zipbutton = Button(root, text="Search By Zip",command=searchbyzip)
zipbutton.grid(row=1,column=0,columnspan=2)
root.mainloop()

它适用于默认邮政编码,但当我输入自定义邮政编码时会引发异常块。真的无法确定这里的问题。我也是 tkinter 的新手,现在有点探索。

标签: jsonpython-3.xtkinterpython-requests

解决方案


推荐阅读