python自动获取天气_使用Python获取各个城市当前的天气情况

这次的这个项目,弄了好几天,主要在tkinter上做GUI界面上一直卡住,在网上资料又不多,最后直接放弃稍微复杂的东西,直接做个简单点的界面。

程序功能:

1、可以查询不同城市的天气情况和显示时间,每60秒刷新次天气情况,如图:

2、可以自由选择城市,选择之后立刻获取该城市的天气情况

关键代码

# _*_ coding: utf-8 _*_

import requests

import time

def weather_log(stu): #获取实时天气情况写入到文本

cu_time=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

fp=open('weather.log','a')

fp.write('{} {}'.format(cu_time,stu))

fp.close()

#把文本中城市与城市ID一一对应的关系存进dic字典中

f=open('cityid.txt','r')

dic={}

for line in f:

v=line.strip().split(',')

dic[v[1]]=v[0]

f.close()

def update_weather(city): #通过小米天气API获取天气状况

if city in dic:

cityid=dic[city]

temp=requests.get("http://weatherapi.market.xiaomi.com/wtr-v2/temp/realtime?cityId="+cityid)

temp.encoding='utf-8'

tem=temp.json()['weatherinfo']['temp']

SD=temp.json()['weatherinfo']['SD']

w=temp.json()['weatherinfo']['WD']+temp.json()['weatherinfo']['WS']

weather=temp.json()['weatherinfo']['weather']

update_time=temp.json()['weatherinfo']['time']

stu='{0}此刻温度:{1} {2} {3} 天气更新时间:{4}\n'.format(city,tem,weather,w,update_time)

weather_log(stu)

else :

print("请确定城市是否正确")

return (tem,SD,w,weather)

这些只是关键代码,完整代码和cityid文件可在下面的链接中下载。

cityid的文件格式如下图:

关键程序很简单,就是通过cityid这文件生成cityid与城市名对应的字典,再通过小米的天气API去获取该城市的天气信息,请求的地址返回的是json格式的数据,所以直接用requests库中的json的方法访问即可,无需使用标准库的json库。

思考与总结

本次项目更多的坑是在tkinter的使用上,真是tkinter从入门到放弃。不过也了解tkinter的一些运行机制,了解tkinter的三种布局方式,pack(),place(),grid(),此次主演用到的是place()。

使用了Python的多线程,分别是用来控制窗口的主线程、控制时间的子线程和控制天气更新的子线程。

学习使用了sleep.time()隔段时间来更新天气情况。

不过此次小项目主要的思想还是面向过程的,代码想到哪就写到哪,没有个合理的规划。

对于面向对象的编程还是很不熟,接下来要往这方面去学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值