当前位置:网站首页>PyQt5 rapid development and actual combat 10.1 Get city weather forecast
PyQt5 rapid development and actual combat 10.1 Get city weather forecast
2022-07-31 12:32:00 【Ding Jiaxiong】
PyQt5快速开发与实战
文章目录
10. 第10章 PyQt5 实战一:经典程序开发
10.1 Get city weather forecast
发送一个HTTP请求,Then parse the result returned by the request,Finally, the request result is displayed in the window.
10.1.1 获取天气数据
爬虫
Get the weather forecast from the websiteHTML页面,然后使用 XPath或 BeautifulSoap解析 HTML页面的内容
Provided by the weather forecast websiteAPI
直接获取结构化数据

安装Requests库
pip install requests

10.1.2 获取不同城市的天气预报API
请求地址:http://www.weather.com.cn/data/sk/城市代码.html
城市代码:
{
"城市代码": [{
"省": "四川",
"市": [{
"市名": "成都",
"编码": "101270101"
}, {
"市名": "自贡",
"编码": "101270301"
}, {
"市名": "绵阳",
"编码": "101270401"
}, {
"市名": "南充",
"编码": "101270501"
}, {
"市名": "达州",
"编码": "101270601"
}, {
"市名": "遂宁",
"编码": "101270701"
}, {
"市名": "广安",
"编码": "101270801"
}, {
"市名": "巴中",
"编码": "101270901"
}, {
"市名": "泸州",
"编码": "101271001"
}, {
"市名": "宜宾",
"编码": "101271101"
}, {
"市名": "内江",
"编码": "101271201"
}, {
"市名": "资阳",
"编码": "101271301"
}, {
"市名": "乐山",
"编码": "101271401"
}, {
"市名": "眉山",
"编码": "101271501"
}, {
"市名": "凉山",
"编码": "101271601"
}, {
"市名": "雅安",
"编码": "101271701"
}, {
"市名": "甘孜",
"编码": "101271801"
}, {
"市名": "阿坝",
"编码": "101271901"
}, {
"市名": "德阳",
"编码": "101272001"
}, {
"市名": "广元",
"编码": "101272101"
}, {
"市名": "攀枝花",
"编码": "101270201"
}]
}, {
"省": "江苏",
"市": [{
"市名": "南京",
"编码": "101190101"
}, {
"市名": "镇江",
"编码": "101190301"
}, {
"市名": "苏州",
"编码": "101190401"
}, {
"市名": "南通",
"编码": "101190501"
}, {
"市名": "扬州",
"编码": "101190601"
}, {
"市名": "宿迁",
"编码": "101191301"
}, {
"市名": "徐州",
"编码": "101190801"
}, {
"市名": "淮安",
"编码": "101190901"
}, {
"市名": "连云港",
"编码": "101191001"
}, {
"市名": "常州",
"编码": "101191101"
}, {
"市名": "泰州",
"编码": "101191201"
}, {
"市名": "无锡",
"编码": "101190201"
}, {
"市名": "盐城",
"编码": "101190701"
}]
}, {
"省": "重庆",
"市": [{
"市名": "重庆",
"编码": "101040100"
}, {
"市名": "合川",
"编码": "101040300"
}, {
"市名": "南川",
"编码": "101040400"
}, {
"市名": "江津",
"编码": "101040500"
}, {
"市名": "万盛",
"编码": "101040600"
}, {
"市名": "渝北",
"编码": "101040700"
}, {
"市名": "北碚",
"编码": "101040800"
}, {
"市名": "巴南",
"编码": "101040900"
}, {
"市名": "长寿",
"编码": "101041000"
}, {
"市名": "黔江",
"编码": "101041100"
}, {
"市名": "万州天城",
"编码": "101041200"
}, {
"市名": "万州龙宝",
"编码": "101041300"
}, {
"市名": "涪陵",
"编码": "101041400"
}, {
"市名": "开县",
"编码": "101041500"
}, {
"市名": "城口",
"编码": "101041600"
}, {
"市名": "云阳",
"编码": "101041700"
}, {
"市名": "巫溪",
"编码": "101041800"
}, {
"市名": "奉节",
"编码": "101041900"
}, {
"市名": "巫山",
"编码": "101042000"
}, {
"市名": "潼南",
"编码": "101042100"
}, {
"市名": "垫江",
"编码": "101042200"
}, {
"市名": "梁平",
"编码": "101042300"
}, {
"市名": "忠县",
"编码": "101042400"
}, {
"市名": "石柱",
"编码": "101042500"
}, {
"市名": "大足",
"编码": "101042600"
}, {
"市名": "荣昌",
"编码": "101042700"
}, {
"市名": "铜梁",
"编码": "101042800"
}, {
"市名": "璧山",
"编码": "101042900"
}, {
"市名": "丰都",
"编码": "101043000"
}, {
"市名": "武隆",
"编码": "101043100"
}, {
"市名": "彭水",
"编码": "101043200"
}, {
"市名": "綦江",
"编码": "101043300"
}, {
"市名": "酉阳",
"编码": "101043400"
}, {
"市名": "秀山",
"编码": "101043600"
}, {
"市名": "沙坪坝",
"编码": "101043700"
}, {
"市名": "永川",
"编码": "101040200"
}]
}, {
"省": "北京",
"市": [{
"市名": "北京",
"编码": "101010100"
}, {
"市名": "朝阳",
"编码": "101010300"
}, {
"市名": "顺义",
"编码": "101010400"
}, {
"市名": "怀柔",
"编码": "101010500"
}, {
"市名": "通州",
"编码": "101010600"
}, {
"市名": "昌平",
"编码": "101010700"
}, {
"市名": "延庆",
"编码": "101010800"
}, {
"市名": "丰台",
"编码": "101010900"
}, {
"市名": "石景山",
"编码": "101011000"
}, {
"市名": "大兴",
"编码": "101011100"
}, {
"市名": "房山",
"编码": "101011200"
}, {
"市名": "密云",
"编码": "101011300"
}, {
"市名": "门头沟",
"编码": "101011400"
}, {
"市名": "平谷",
"编码": "101011500"
}, {
"市名": "八达岭",
"编码": "101011600"
}, {
"市名": "佛爷顶",
"编码": "101011700"
}, {
"市名": "汤河口",
"编码": "101011800"
}, {
"市名": "密云上甸子",
"编码": "101011900"
}, {
"市名": "斋堂",
"编码": "101012000"
}, {
"市名": "霞云岭",
"编码": "101012100"
}, {
"市名": "北京城区",
"编码": "101012200"
}, {
"市名": "海淀",
"编码": "101010200"
}]
}, {
"省": "福建",
"市": [{
"市名": "福州",
"编码": "101230101"
}, {
"市名": "泉州",
"编码": "101230501"
}, {
"市名": "漳州",
"编码": "101230601"
}, {
"市名": "龙岩",
"编码": "101230701"
}, {
"市名": "晋江",
"编码": "101230509"
}, {
"市名": "南平",
"编码": "101230901"
}, {
"市名": "厦门",
"编码": "101230201"
}, {
"市名": "宁德",
"编码": "101230301"
}, {
"市名": "莆田",
"编码": "101230401"
}, {
"市名": "三明",
"编码": "101230801"
}]
}, {
"省": "甘肃",
"市": [{
"市名": "兰州",
"编码": "101160101"
}, {
"市名": "平凉",
"编码": "101160301"
}, {
"市名": "庆阳",
"编码": "101160401"
}, {
"市名": "武威",
"编码": "101160501"
}, {
"市名": "金昌",
"编码": "101160601"
}, {
"市名": "嘉峪关",
"编码": "101161401"
}, {
"市名": "酒泉",
"编码": "101160801"
}, {
"市名": "天水",
"编码": "101160901"
}, {
"市名": "武都",
"编码": "101161001"
}, {
"市名": "临夏",
"编码": "101161101"
}, {
"市名": "合作",
"编码": "101161201"
}, {
"市名": "白银",
"编码": "101161301"
}, {
"市名": "定西",
"编码": "101160201"
}, {
"市名": "张掖",
"编码": "101160701"
}]
}, {
"省": "广东",
"市": [{
"市名": "广州",
"编码": "101280101"
}, {
"市名": "惠州",
"编码": "101280301"
}, {
"市名": "梅州",
"编码": "101280401"
}, {
"市名": "汕头",
"编码": "101280501"
}, {
"市名": "深圳",
"编码": "101280601"
}, {
"市名": "珠海",
"编码": "101280701"
}, {
"市名": "佛山",
"编码": "101280800"
}, {
"市名": "肇庆",
"编码": "101280901"
}, {
"市名": "湛江",
"编码": "101281001"
}, {
"市名": "江门",
"编码": "101281101"
}, {
"市名": "河源",
"编码": "101281201"
}, {
"市名": "清远",
"编码": "101281301"
}, {
"市名": "云浮",
"编码": "101281401"
}, {
"市名": "潮州",
"编码": "101281501"
}, {
"市名": "东莞",
"编码": "101281601"
}, {
"市名": "中山",
"编码": "101281701"
}, {
"市名": "阳江",
"编码": "101281801"
}, {
"市名": "揭阳",
"编码": "101281901"
}, {
"市名": "茂名",
"编码": "101282001"
}, {
"市名": "汕尾",
"编码": "101282101"
}, {
"市名": "韶关",
"编码": "101280201"
}]
}, {
"省": "天津市",
"市": [{
"市名": "天津",
"编码": "101030100"
}, {
"市名": "宝坻",
"编码": "101030300"
}, {
"市名": "东丽",
"编码": "101030400"
}, {
"市名": "西青",
"编码": "101030500"
}, {
"市名": "北辰",
"编码": "101030600"
}, {
"市名": "蓟县",
"编码": "101031400"
}, {
"市名": "汉沽",
"编码": "101030800"
}, {
"市名": "静海",
"编码": "101030900"
}, {
"市名": "津南",
"编码": "101031000"
}, {
"市名": "塘沽",
"编码": "101031100"
}, {
"市名": "大港",
"编码": "101031200"
}, {
"市名": "武清",
"编码": "101030200"
}, {
"市名": "宁河",
"编码": "101030700"
}]
}, {
"省": "上海",
"市": [{
"市名": "上海",
"编码": "101020100"
}, {
"市名": "宝山",
"编码": "101020300"
}, {
"市名": "嘉定",
"编码": "101020500"
}, {
"市名": "南汇",
"编码": "101020600"
}, {
"市名": "浦东",
"编码": "101021300"
}, {
"市名": "青浦",
"编码": "101020800"
}, {
"市名": "松江",
"编码": "101020900"
}, {
"市名": "奉贤",
"编码": "101021000"
}, {
"市名": "崇明",
"编码": "101021100"
}, {
"市名": "徐家汇",
"编码": "101021200"
}, {
"市名": "闵行",
"编码": "101020200"
}, {
"市名": "金山",
"编码": "101020700"
}]
}, {
"省": "河北",
"市": [{
"市名": "石家庄",
"编码": "101090101"
}, {
"市名": "张家口",
"编码": "101090301"
}, {
"市名": "承德",
"编码": "101090402"
}, {
"市名": "唐山",
"编码": "101090501"
}, {
"市名": "秦皇岛",
"编码": "101091101"
}, {
"市名": "沧州",
"编码": "101090701"
}, {
"市名": "衡水",
"编码": "101090801"
}, {
"市名": "邢台",
"编码": "101090901"
}, {
"市名": "邯郸",
"编码": "101091001"
}, {
"市名": "保定",
"编码": "101090201"
}, {
"市名": "廊坊",
"编码": "101090601"
}]
}, {
"省": "河南",
"市": [{
"市名": "郑州",
"编码": "101180101"
}, {
"市名": "新乡",
"编码": "101180301"
}, {
"市名": "许昌",
"编码": "101180401"
}, {
"市名": "平顶山",
"编码": "101180501"
}, {
"市名": "信阳",
"编码": "101180601"
}, {
"市名": "南阳",
"编码": "101180701"
}, {
"市名": "开封",
"编码": "101180801"
}, {
"市名": "洛阳",
"编码": "101180901"
}, {
"市名": "商丘",
"编码": "101181001"
}, {
"市名": "焦作",
"编码": "101181101"
}, {
"市名": "鹤壁",
"编码": "101181201"
}, {
"市名": "濮阳",
"编码": "101181301"
}, {
"市名": "周口",
"编码": "101181401"
}, {
"市名": "漯河",
"编码": "101181501"
}, {
"市名": "驻马店",
"编码": "101181601"
}, {
"市名": "三门峡",
"编码": "101181701"
}, {
"市名": "济源",
"编码": "101181801"
}, {
"市名": "安阳",
"编码": "101180201"
}]
}, {
"省": "安徽",
"市": [{
"市名": "合肥",
"编码": "101220101"
}, {
"市名": "芜湖",
"编码": "101220301"
}, {
"市名": "淮南",
"编码": "101220401"
}, {
"市名": "马鞍山",
"编码": "101220501"
}, {
"市名": "安庆",
"编码": "101220601"
}, {
"市名": "宿州",
"编码": "101220701"
}, {
"市名": "阜阳",
"编码": "101220801"
}, {
"市名": "亳州",
"编码": "101220901"
}, {
"市名": "黄山",
"编码": "101221001"
}, {
"市名": "滁州",
"编码": "101221101"
}, {
"市名": "淮北",
"编码": "101221201"
}, {
"市名": "铜陵",
"编码": "101221301"
}, {
"市名": "宣城",
"编码": "101221401"
}, {
"市名": "六安",
"编码": "101221501"
}, {
"市名": "巢湖",
"编码": "101221601"
}, {
"市名": "池州",
"编码": "101221701"
}, {
"市名": "蚌埠",
"编码": "101220201"
}]
}, {
"省": "浙江",
"市": [{
"市名": "杭州",
"编码": "101210101"
}, {
"市名": "舟山",
"编码": "101211101"
}, {
"市名": "湖州",
"编码": "101210201"
}, {
"市名": "嘉兴",
"编码": "101210301"
}, {
"市名": "金华",
"编码": "101210901"
}, {
"市名": "绍兴",
"编码": "101210501"
}, {
"市名": "台州",
"编码": "101210601"
}, {
"市名": "温州",
"编码": "101210701"
}, {
"市名": "丽水",
"编码": "101210801"
}, {
"市名": "衢州",
"编码": "101211001"
}, {
"市名": "宁波",
"编码": "101210401"
}]
}, {
"省": "广西",
"市": [{
"市名": "南宁",
"编码": "101300101"
}, {
"市名": "柳州",
"编码": "101300301"
}, {
"市名": "来宾",
"编码": "101300401"
}, {
"市名": "桂林",
"编码": "101300501"
}, {
"市名": "梧州",
"编码": "101300601"
}, {
"市名": "防城港",
"编码": "101301401"
}, {
"市名": "贵港",
"编码": "101300801"
}, {
"市名": "玉林",
"编码": "101300901"
}, {
"市名": "百色",
"编码": "101301001"
}, {
"市名": "钦州",
"编码": "101301101"
}, {
"市名": "河池",
"编码": "101301201"
}, {
"市名": "北海",
"编码": "101301301"
}, {
"市名": "崇左",
"编码": "101300201"
}, {
"市名": "贺州",
"编码": "101300701"
}]
}, {
"省": "贵州",
"市": [{
"市名": "贵阳",
"编码": "101260101"
}, {
"市名": "安顺",
"编码": "101260301"
}, {
"市名": "都匀",
"编码": "101260401"
}, {
"市名": "兴义",
"编码": "101260906"
}, {
"市名": "铜仁",
"编码": "101260601"
}, {
"市名": "毕节",
"编码": "101260701"
}, {
"市名": "六盘水",
"编码": "101260801"
}, {
"市名": "遵义",
"编码": "101260201"
}, {
"市名": "凯里",
"编码": "101260501"
}]
}, {
"省": "云南",
"市": [{
"市名": "昆明",
"编码": "101290101"
}, {
"市名": "红河",
"编码": "101290301"
}, {
"市名": "文山",
"编码": "101290601"
}, {
"市名": "玉溪",
"编码": "101290701"
}, {
"市名": "楚雄",
"编码": "101290801"
}, {
"市名": "普洱",
"编码": "101290901"
}, {
"市名": "昭通",
"编码": "101291001"
}, {
"市名": "临沧",
"编码": "101291101"
}, {
"市名": "怒江",
"编码": "101291201"
}, {
"市名": "香格里拉",
"编码": "101291301"
}, {
"市名": "丽江",
"编码": "101291401"
}, {
"市名": "德宏",
"编码": "101291501"
}, {
"市名": "景洪",
"编码": "101291601"
}, {
"市名": "大理",
"编码": "101290201"
}, {
"市名": "曲靖",
"编码": "101290401"
}, {
"市名": "保山",
"编码": "101290501"
}]
}, {
"省": "内蒙古",
"市": [{
"市名": "呼和浩特",
"编码": "101080101"
}, {
"市名": "乌海",
"编码": "101080301"
}, {
"市名": "集宁",
"编码": "101080401"
}, {
"市名": "通辽",
"编码": "101080501"
}, {
"市名": "阿拉善左旗",
"编码": "101081201"
}, {
"市名": "鄂尔多斯",
"编码": "101080701"
}, {
"市名": "临河",
"编码": "101080801"
}, {
"市名": "锡林浩特",
"编码": "101080901"
}, {
"市名": "呼伦贝尔",
"编码": "101081000"
}, {
"市名": "乌兰浩特",
"编码": "101081101"
}, {
"市名": "包头",
"编码": "101080201"
}, {
"市名": "赤峰",
"编码": "101080601"
}]
}, {
"省": "江西",
"市": [{
"市名": "南昌",
"编码": "101240101"
}, {
"市名": "上饶",
"编码": "101240301"
}, {
"市名": "抚州",
"编码": "101240401"
}, {
"市名": "宜春",
"编码": "101240501"
}, {
"市名": "鹰潭",
"编码": "101241101"
}, {
"市名": "赣州",
"编码": "101240701"
}, {
"市名": "景德镇",
"编码": "101240801"
}, {
"市名": "萍乡",
"编码": "101240901"
}, {
"市名": "新余",
"编码": "101241001"
}, {
"市名": "九江",
"编码": "101240201"
}, {
"市名": "吉安",
"编码": "101240601"
}]
}, {
"省": "湖北",
"市": [{
"市名": "武汉",
"编码": "101200101"
}, {
"市名": "黄冈",
"编码": "101200501"
}, {
"市名": "荆州",
"编码": "101200801"
}, {
"市名": "宜昌",
"编码": "101200901"
}, {
"市名": "恩施",
"编码": "101201001"
}, {
"市名": "十堰",
"编码": "101201101"
}, {
"市名": "神农架",
"编码": "101201201"
}, {
"市名": "随州",
"编码": "101201301"
}, {
"市名": "荆门",
"编码": "101201401"
}, {
"市名": "天门",
"编码": "101201501"
}, {
"市名": "仙桃",
"编码": "101201601"
}, {
"市名": "潜江",
"编码": "101201701"
}, {
"市名": "襄樊",
"编码": "101200201"
}, {
"市名": "鄂州",
"编码": "101200301"
}, {
"市名": "孝感",
"编码": "101200401"
}, {
"市名": "黄石",
"编码": "101200601"
}, {
"市名": "咸宁",
"编码": "101200701"
}]
}, {
"省": "宁夏",
"市": [{
"市名": "银川",
"编码": "101170101"
}, {
"市名": "中卫",
"编码": "101170501"
}, {
"市名": "固原",
"编码": "101170401"
}, {
"市名": "石嘴山",
"编码": "101170201"
}, {
"市名": "吴忠",
"编码": "101170301"
}]
}, {
"省": "青海省",
"市": [{
"市名": "西宁",
"编码": "101150101"
}, {
"市名": "黄南",
"编码": "101150301"
}, {
"市名": "海北",
"编码": "101150801"
}, {
"市名": "果洛",
"编码": "101150501"
}, {
"市名": "玉树",
"编码": "101150601"
}, {
"市名": "海西",
"编码": "101150701"
}, {
"市名": "海东",
"编码": "101150201"
}, {
"市名": "海南",
"编码": "101150401"
}]
}, {
"省": "山东",
"市": [{
"市名": "济南",
"编码": "101120101"
}, {
"市名": "潍坊",
"编码": "101120601"
}, {
"市名": "临沂",
"编码": "101120901"
}, {
"市名": "菏泽",
"编码": "101121001"
}, {
"市名": "滨州",
"编码": "101121101"
}, {
"市名": "东营",
"编码": "101121201"
}, {
"市名": "威海",
"编码": "101121301"
}, {
"市名": "枣庄",
"编码": "101121401"
}, {
"市名": "日照",
"编码": "101121501"
}, {
"市名": "莱芜",
"编码": "101121601"
}, {
"市名": "聊城",
"编码": "101121701"
}, {
"市名": "青岛",
"编码": "101120201"
}, {
"市名": "淄博",
"编码": "101120301"
}, {
"市名": "德州",
"编码": "101120401"
}, {
"市名": "烟台",
"编码": "101120501"
}, {
"市名": "济宁",
"编码": "101120701"
}, {
"市名": "泰安",
"编码": "101120801"
}]
}, {
"省": "陕西省",
"市": [{
"市名": "西安",
"编码": "101110101"
}, {
"市名": "延安",
"编码": "101110300"
}, {
"市名": "榆林",
"编码": "101110401"
}, {
"市名": "铜川",
"编码": "101111001"
}, {
"市名": "商洛",
"编码": "101110601"
}, {
"市名": "安康",
"编码": "101110701"
}, {
"市名": "汉中",
"编码": "101110801"
}, {
"市名": "宝鸡",
"编码": "101110901"
}, {
"市名": "咸阳",
"编码": "101110200"
}, {
"市名": "渭南",
"编码": "101110501"
}]
}, {
"省": "山西",
"市": [{
"市名": "太原",
"编码": "101100101"
}, {
"市名": "临汾",
"编码": "101100701"
}, {
"市名": "运城",
"编码": "101100801"
}, {
"市名": "朔州",
"编码": "101100901"
}, {
"市名": "忻州",
"编码": "101101001"
}, {
"市名": "长治",
"编码": "101100501"
}, {
"市名": "大同",
"编码": "101100201"
}, {
"市名": "阳泉",
"编码": "101100301"
}, {
"市名": "晋中",
"编码": "101100401"
}, {
"市名": "晋城",
"编码": "101100601"
}, {
"市名": "吕梁",
"编码": "101101100"
}]
}, {
"省": "新疆",
"市": [{
"市名": "乌鲁木齐",
"编码": "101130101"
}, {
"市名": "石河子",
"编码": "101130301"
}, {
"市名": "昌吉",
"编码": "101130401"
}, {
"市名": "吐鲁番",
"编码": "101130501"
}, {
"市名": "库尔勒",
"编码": "101130601"
}, {
"市名": "阿拉尔",
"编码": "101130701"
}, {
"市名": "阿克苏",
"编码": "101130801"
}, {
"市名": "喀什",
"编码": "101130901"
}, {
"市名": "伊宁",
"编码": "101131001"
}, {
"市名": "塔城",
"编码": "101131101"
}, {
"市名": "哈密",
"编码": "101131201"
}, {
"市名": "和田",
"编码": "101131301"
}, {
"市名": "阿勒泰",
"编码": "101131401"
}, {
"市名": "阿图什",
"编码": "101131501"
}, {
"市名": "博乐",
"编码": "101131601"
}, {
"市名": "克拉玛依",
"编码": "101130201"
}]
}, {
"省": "西藏",
"市": [{
"市名": "拉萨",
"编码": "101140101"
}, {
"市名": "山南",
"编码": "101140301"
}, {
"市名": "阿里",
"编码": "101140701"
}, {
"市名": "昌都",
"编码": "101140501"
}, {
"市名": "那曲",
"编码": "101140601"
}, {
"市名": "日喀则",
"编码": "101140201"
}, {
"市名": "林芝",
"编码": "101140401"
}]
}, {
"省": "台湾",
"市": [{
"市名": "台北县",
"编码": "101340101"
}, {
"市名": "高雄",
"编码": "101340201"
}, {
"市名": "台中",
"编码": "101340401"
}]
}, {
"省": "海南省",
"市": [{
"市名": "海口",
"编码": "101310101"
}, {
"市名": "三亚",
"编码": "101310201"
}, {
"市名": "东方",
"编码": "101310202"
}, {
"市名": "临高",
"编码": "101310203"
}, {
"市名": "澄迈",
"编码": "101310204"
}, {
"市名": "儋州",
"编码": "101310205"
}, {
"市名": "昌江",
"编码": "101310206"
}, {
"市名": "白沙",
"编码": "101310207"
}, {
"市名": "琼中",
"编码": "101310208"
}, {
"市名": "定安",
"编码": "101310209"
}, {
"市名": "屯昌",
"编码": "101310210"
}, {
"市名": "琼海",
"编码": "101310211"
}, {
"市名": "文昌",
"编码": "101310212"
}, {
"市名": "保亭",
"编码": "101310214"
}, {
"市名": "万宁",
"编码": "101310215"
}, {
"市名": "陵水",
"编码": "101310216"
}, {
"市名": "西沙",
"编码": "101310217"
}, {
"市名": "南沙岛",
"编码": "101310220"
}, {
"市名": "乐东",
"编码": "101310221"
}, {
"市名": "五指山",
"编码": "101310222"
}, {
"市名": "琼山",
"编码": "101310102"
}]
}, {
"省": "湖南",
"市": [{
"市名": "长沙",
"编码": "101250101"
}, {
"市名": "株洲",
"编码": "101250301"
}, {
"市名": "衡阳",
"编码": "101250401"
}, {
"市名": "郴州",
"编码": "101250501"
}, {
"市名": "常德",
"编码": "101250601"
}, {
"市名": "益阳",
"编码": "101250700"
}, {
"市名": "娄底",
"编码": "101250801"
}, {
"市名": "邵阳",
"编码": "101250901"
}, {
"市名": "岳阳",
"编码": "101251001"
}, {
"市名": "张家界",
"编码": "101251101"
}, {
"市名": "怀化",
"编码": "101251201"
}, {
"市名": "黔阳",
"编码": "101251301"
}, {
"市名": "永州",
"编码": "101251401"
}, {
"市名": "吉首",
"编码": "101251501"
}, {
"市名": "湘潭",
"编码": "101250201"
}]
}, {
"省": "黑龙江",
"市": [{
"市名": "哈尔滨",
"编码": "101050101"
}, {
"市名": "牡丹江",
"编码": "101050301"
}, {
"市名": "佳木斯",
"编码": "101050401"
}, {
"市名": "绥化",
"编码": "101050501"
}, {
"市名": "黑河",
"编码": "101050601"
}, {
"市名": "双鸭山",
"编码": "101051301"
}, {
"市名": "伊春",
"编码": "101050801"
}, {
"市名": "大庆",
"编码": "101050901"
}, {
"市名": "七台河",
"编码": "101051002"
}, {
"市名": "鸡西",
"编码": "101051101"
}, {
"市名": "鹤岗",
"编码": "101051201"
}, {
"市名": "齐齐哈尔",
"编码": "101050201"
}, {
"市名": "大兴安岭",
"编码": "101050701"
}]
}, {
"省": "吉林",
"市": [{
"市名": "长春",
"编码": "101060101"
}, {
"市名": "延吉",
"编码": "101060301"
}, {
"市名": "四平",
"编码": "101060401"
}, {
"市名": "白山",
"编码": "101060901"
}, {
"市名": "白城",
"编码": "101060601"
}, {
"市名": "辽源",
"编码": "101060701"
}, {
"市名": "松原",
"编码": "101060801"
}, {
"市名": "吉林",
"编码": "101060201"
}, {
"市名": "通化",
"编码": "101060501"
}]
}, {
"省": "辽宁",
"市": [{
"市名": "沈阳",
"编码": "101070101"
}, {
"市名": "鞍山",
"编码": "101070301"
}, {
"市名": "抚顺",
"编码": "101070401"
}, {
"市名": "本溪",
"编码": "101070501"
}, {
"市名": "丹东",
"编码": "101070601"
}, {
"市名": "葫芦岛",
"编码": "101071401"
}, {
"市名": "营口",
"编码": "101070801"
}, {
"市名": "阜新",
"编码": "101070901"
}, {
"市名": "辽阳",
"编码": "101071001"
}, {
"市名": "铁岭",
"编码": "101071101"
}, {
"市名": "朝阳",
"编码": "101071201"
}, {
"市名": "盘锦",
"编码": "101071301"
}, {
"市名": "大连",
"编码": "101070201"
}, {
"市名": "锦州",
"编码": "101070701"
}]
}]
}
以北京为例:测试接口

返回参数
| 名称 | 描述 |
|---|---|
| weatherinfo | message root node |
| city | 城市中文名 |
| cityid | 城市ID |
| temp | 温度 |
| WD | 风向 |
| WS | 风力 |
| SD | 湿度 |
| WSE | 风力 |
| time | 发布时间 |
| rain | 是否下雨,1有雨,0无雨 |
| idRadar | Is there a radar chart,1有,0无 |
| Radar | Radar chart number |
import requests
request = requests.get("http://www.weather.com.cn/data/sk/101010100.html")
request.encoding = 'utf-8'
print("返回结果:%s" % request.json())
print("城市:%s" % request.json()['weatherinfo']['city'])
print("风向:%s" % request.json()['weatherinfo']['WD'])
print("温度:%s" % request.json()['weatherinfo']['temp'] + "℃")
print("风力:%s" % request.json()['weatherinfo']['WS'])
print("湿度:%s" % request.json()['weatherinfo']['SD'])

10.1.3 界面实现

ui文件
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>484</width>
<height>409</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>431</width>
<height>251</height>
</rect>
</property>
<property name="title">
<string>查询城市天气</string>
</property>
<widget class="QComboBox" name="weatherComboBox">
<property name="geometry">
<rect>
<x>80</x>
<y>30</y>
<width>221</width>
<height>21</height>
</rect>
</property>
<item>
<property name="text">
<string>北京</string>
</property>
</item>
<item>
<property name="text">
<string>天津</string>
</property>
</item>
<item>
<property name="text">
<string>上海</string>
</property>
</item>
</widget>
<widget class="QTextEdit" name="resultText">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>411</width>
<height>181</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>72</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>城市</string>
</property>
</widget>
</widget>
<widget class="QPushButton" name="queryBtn">
<property name="geometry">
<rect>
<x>90</x>
<y>300</y>
<width>93</width>
<height>28</height>
</rect>
</property>
<property name="text">
<string>查询</string>
</property>
</widget>
<widget class="QPushButton" name="clearBtn">
<property name="geometry">
<rect>
<x>230</x>
<y>300</y>
<width>93</width>
<height>28</height>
</rect>
</property>
<property name="text">
<string>清空</string>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>clearBtn</sender>
<signal>clicked()</signal>
<receiver>Form</receiver>
<slot>clearResult()</slot>
<hints>
<hint type="sourcelabel">
<x>270</x>
<y>314</y>
</hint>
<hint type="destinationlabel">
<x>363</x>
<y>288</y>
</hint>
</hints>
</connection>
<connection>
<sender>queryBtn</sender>
<signal>clicked()</signal>
<receiver>Form</receiver>
<slot>queryWeather()</slot>
<hints>
<hint type="sourcelabel">
<x>161</x>
<y>313</y>
</hint>
<hint type="destinationlabel">
<x>64</x>
<y>286</y>
</hint>
</hints>
</connection>
</connections>
<slots>
<slot>clearResult()</slot>
<slot>queryWeather()</slot>
</slots>
</ui>
10.1.4 Convert the interface file to .py文件

WeatherWin.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'WeatherWin.ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(484, 409)
self.groupBox = QtWidgets.QGroupBox(Form)
self.groupBox.setGeometry(QtCore.QRect(10, 10, 431, 251))
self.groupBox.setObjectName("groupBox")
self.weatherComboBox = QtWidgets.QComboBox(self.groupBox)
self.weatherComboBox.setGeometry(QtCore.QRect(80, 30, 221, 21))
self.weatherComboBox.setObjectName("weatherComboBox")
self.weatherComboBox.addItem("")
self.weatherComboBox.addItem("")
self.weatherComboBox.addItem("")
self.resultText = QtWidgets.QTextEdit(self.groupBox)
self.resultText.setGeometry(QtCore.QRect(10, 60, 411, 181))
self.resultText.setObjectName("resultText")
self.label = QtWidgets.QLabel(self.groupBox)
self.label.setGeometry(QtCore.QRect(20, 30, 72, 21))
self.label.setObjectName("label")
self.queryBtn = QtWidgets.QPushButton(Form)
self.queryBtn.setGeometry(QtCore.QRect(90, 300, 93, 28))
self.queryBtn.setObjectName("queryBtn")
self.clearBtn = QtWidgets.QPushButton(Form)
self.clearBtn.setGeometry(QtCore.QRect(230, 300, 93, 28))
self.clearBtn.setObjectName("clearBtn")
self.retranslateUi(Form)
self.clearBtn.clicked.connect(Form.clearResult)
self.queryBtn.clicked.connect(Form.queryWeather)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.groupBox.setTitle(_translate("Form", "查询城市天气"))
self.weatherComboBox.setItemText(0, _translate("Form", "北京"))
self.weatherComboBox.setItemText(1, _translate("Form", "天津"))
self.weatherComboBox.setItemText(2, _translate("Form", "上海"))
self.label.setText(_translate("Form", "城市"))
self.queryBtn.setText(_translate("Form", "查询"))
self.clearBtn.setText(_translate("Form", "清空"))
10.1.5 调用主窗口类
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication , QMainWindow
from WeatherWin import Ui_Form
import requests
class MainWindow(QMainWindow ):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.ui = Ui_Form()
self.ui.setupUi(self)
def queryWeather(self):
print('* queryWeather ')
cityName = self.ui.weatherComboBox.currentText()
cityCode = self.transCityName(cityName)
rep = requests.get('http://www.weather.com.cn/data/sk/' + cityCode + '.html')
rep.encoding = 'utf-8'
print( rep.json() )
msg1 = '城市: %s' % rep.json()['weatherinfo']['city'] + '\n'
msg2 = '风向: %s' % rep.json()['weatherinfo']['WD'] + '\n'
msg3 = '温度: %s' % rep.json()['weatherinfo']['temp'] + ' 度' + '\n'
msg4 = '风力: %s' % rep.json()['weatherinfo']['WS'] + '\n'
msg5 = '湿度: %s' % rep.json()['weatherinfo']['SD'] + '\n'
result = msg1 + msg2 + msg3 + msg4 + msg5
self.ui.resultText.setText(result)
def transCityName(self ,cityName):
cityCode = ''
if cityName == '北京' :
cityCode = '101010100'
elif cityName == '天津' :
cityCode = '101030100'
elif cityName == '上海' :
cityCode = '101020100'
return cityCode
def clearResult(self):
print('* clearResult ')
self.ui.resultText.clear()
if __name__=="__main__":
from pyqt5_plugins.examples.exampleqmlitem import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())

边栏推荐
猜你喜欢
随机推荐
FIFO深度计算学习记录(汇总)
使用 Excel 读取 SAP ABAP CDS View 通过 ODBC 暴露出来的数据
消息队列面试题(2022最新整理)
深度学习基本概念
LeetCode - 025. 链表中的两数相加
想吃菌子,当然是自己上山找了
Markdown编辑器语法
vb.net 画曲线
Three-Phase PWM Rectifier Predictive Direct Power Control
WPF中报错:“未将对象引用设置到对象的实例。”
SAP message TK 248 solved
dosbox基础使用[通俗易懂]
普林斯顿微积分读本03第二章--编程实现函数图像绘制、三角学回顾
使用openssl命令生成证书和对应的私钥,私钥签名,公钥验签
Anaconda安装labelImg图像标注软件
NPM 使用介绍
Different lower_case_table_names settings for server ('1') and data dictionary ('0') solution
Indoor real-time laser SLAM control method based on biological excitation neural network
关于我放弃考研这件事儿
线性表的基本概念









