json - 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 的新手,现在有点探索。
解决方案
推荐阅读
- integration-testing - EF Core InMemoryDatabase - 如何使用无密钥实体进行测试(映射到 Sql 视图) - XUnit
- java - 在 Java/Springboot 中创建文件时权限被拒绝错误 - Tomcat
- php - 更改默认目录 orderby 会删除 WooCommerce 中的 menu_order 选项
- time - 如何解析自纪元以来格式为微秒的时间戳?
- javascript - React Hooks 更新字典状态
- unity3d - Unity3D:使用上传证书 SHA 密钥将游戏发布到 Play 商店,因此排行榜不适用于用户
- bash - 为什么在输出完成之前会出现自定义 bash 提示?
- swiftui-list - 如何在swiftUI中将背景颜色添加到列表中
- swift - 替代不带标识符的 shouldPerformSegue
- sql - 将表 A 中的每一行与表 B 中的一行相关联,环绕