【Pyqt实战】全国天气查询小程序(含UI界面,python代码)


文章目录

    • 第一步:UI界面设计
    • 第二步:获取天气参数
    • 第三步:编写主程序代码

今天用Pyqt做了个全国天气查询的小程序,可以查询全国各地区当前的天气情况,主要包括温度、风力、风向以及湿度这几个天气参数。

第一步:UI界面设计

首先,使用Qtdesigner进行界面设计,如下图:
【Pyqt实战】全国天气查询小程序(含UI界面,python代码)_第1张图片
设计完成后,将.ui文件转换为.py文件。

第二步:获取天气参数

本程序天气参数主要通过下面这个网站获取:

http://www.weather.com.cn

通过接口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': '小于3级', 'SD': '28%', 'AP': '1002hPa', 'njd': '暂无实况', 'WSE': '<3', 'time': '17:55', 'sm': '2.1', 'isRadar': '1', 'Radar': 'JC_RADAR_AZ9010_JB'}}

因此只要知道全国所有地区的代码,即可获取所有地区的参数信息,通过对网站的研究,通过以下接口可以获取到网站内所用到的全国地区代码信息:

https://j.i8tq.com/weather2020/search/city.js

直接在浏览器中输入上述js接口,结果如下:
【Pyqt实战】全国天气查询小程序(含UI界面,python代码)_第2张图片
我们可以通过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)

好啦,到此主要的功能基本完成。

欢迎大家关注我,共同学习交流。

完整代码获取方式:
方式一:
完整的代码,已经打包上传至我的CSDN资源,可直接下载。
方式二:
关注本人下面公众号“阿旭算法与机器学习”,发送:全国天气查询,即可获取下载链接。

【Pyqt实战】全国天气查询小程序(含UI界面,python代码)_第3张图片

你可能感兴趣的:(从零开始学Pyqt5,python,ui,开发语言,Pyqt实战)