今天用Pyqt做了个全国天气查询的小程序,可以查询全国各地区当前的天气情况,主要包括温度、风力、风向以及湿度这几个天气参数。
第一步:UI界面设计
首先,使用Qtdesigner进行界面设计,如下图:
设计完成后,将.ui文件转换为.py文件。
第二步:获取天气参数
本程序天气参数主要通过下面这个网站获取:
通过接口API:http://www.weather.com.cn/data/sk/城市代码.html,即可获取想要城市或区域的天气信息。
例如获取北京的天气信息,北京代码为‘101010100’:
rep = requests.get('http://www.weather.com.cn/data/sk/101010100.html') rep.encoding = 'utf-8' res = rep.json() print(res)
得到的结果如下:
{'weatherinfo': {'city': '北京', 'cityid': '101010100', 'temp': '27.9', 'WD': '南风', 'WS': '
因此只要知道全国所有地区的代码,即可获取所有地区的参数信息,通过对网站的研究,通过以下接口可以获取到网站内所用到的全国地区代码信息:
直接在浏览器中输入上述js接口,结果如下:
我们可以通过requests库,访问这个接口,然后直接将结果保存为本地文件即可得到想要的全国各个区域数据,通过读取本地保存文件即可获取想要的城市区域编码啦。
保存文件代码如下:
url1 = 'https://j.i8tq.com/weather2020/search/city.js' rep = requests.get(url1) rep.encoding = 'utf-8' # 获取返回结果rep.text,仅保存等号后面的字典部分即可 all_result = str(rep.text).split('=')[1] with open('citycode.txt','w') as f: f.write(all_result) print('success')
第三步:编写主程序代码
主要是查询函数的编写,内容如下:
def queryWeather(self): # 获取所选择的区域代码 cityCode = self.getCityCode() # 调用查询接口,获取所选择区域的天气信息 rep = requests.get('http://www.weather.com.cn/data/sk/' + cityCode + '.html') rep.encoding = 'utf-8' res = rep.json() cur_city = self.ui.comb2.currentText() cur_region = self.ui.comb3.currentText() msg1 = '城市: %s市' % cur_city + '\n' msg2 = '风向: %s' % res['weatherinfo']['WD'] + '\n' msg3 = '温度: %s' % res['weatherinfo']['temp'] + ' 度' + '\n' msg4 = '风力: %s' % res['weatherinfo']['WS'] + '\n' msg5 = '湿度: %s' % res['weatherinfo']['SD'] + '\n' if cur_city == cur_region: result = msg1 + msg2 + msg3 + msg4 + msg5 else: msg_region = '区: %s区' % cur_region + '\n' result = msg1 + msg_region + msg2 + msg3 + msg4 + msg5 # 将信息显示在Text文本控件中 self.ui.textResult.setText(result)
好啦,到此主要的功能基本完成。
欢迎大家关注我,共同学习交流。