10.1.2getWeather

import requests
import sys
from checkCityWeather import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

#原书api已失效
rootPath = "http://t.weather.sojson.com/api/weather/city/"

class demoWin(QMainWindow):
    def __init__(self):
        super(demoWin, self).__init__()
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.ui.checkBtn.clicked.connect(self.queryWeather)
        self.ui.clearBtn.clicked.connect(self.ui.resultTextEdit.clear)


    def queryWeather(self):
        print("* query weather")
        cityName = self.ui.cityComboBox.currentText()
        cityCode = self.cityToCode(cityName)
        print("Checking ", cityName, ', ', cityCode)
        req = requests.get(rootPath + str(cityCode))
        req.encoding = 'utf-8'
        print(req.json())
        msgTime = "update Time: " + req.json()["time"]
        msgCity = "\nCity: " + req.json()["cityInfo"]["city"]
        msgToday = "\nToday temperature: " + req.json()["data"]["forecast"][1]["high"] + ' ' + req.json()["data"]["forecast"][1]["low"]
        msgNow = "\nNow: " + req.json()["data"]["wendu"] + "℃"
        msgHumidity = "\nHumidty: " + req.json()["data"]["shidu"]
        allMsg = msgTime + msgCity + msgToday + msgNow + msgHumidity

        self.ui.resultTextEdit.setText(allMsg)

    def cityToCode(self, name):
        nameDict = {'北京':101010100, '天津':101030100, '上海':101020100}
        return nameDict[name]

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = demoWin()
    win.show()
    sys.exit(app.exec_())



'''
{
    "time": "2018-09-22 12:37:21",//系统更新时间
    "cityInfo": {
        "city": "天津市",  //请求城市
        "cityId": "101030100",//请求ID
        "parent": "天津",     //上级,一般是省份
        "updateTime": "12:32"//天气更新时间
    },
    "date": "20180922",     //当前天气的当天日期
    "message": "Success !", //返回message
    "status": 200,          //返回状态
    "data": {
        "shidu": "22%",     //湿度
        "pm25": 15.0,       //pm2.5
        "pm10": 46.0,       //pm10
        "quality": "优",    //空气质量
        "wendu": "24",      //温度
        "ganmao": "各类人群可自由活动",//感冒提醒(指数)
        "forecast": [//今天+未来14天
            {
                "date": "22",
                "ymd": "2018-09-22",   //年月日  (新增)
                "week": "星期六",       //星期 (新增)
                "sunrise": "05:57",
                "high": "高温 26.0℃",
                "low": "低温 15.0℃",
                "sunset": "18:10",
                "aqi": 55.0,
                "fx": "西北风",
                "fl": "4-5级",
                "type": "晴",
                "notice": "愿你拥有比阳光明媚的心情"
            },
            {
                "date": "23",
                "ymd": "2018-09-22",   //年月日  (新增)
                "week": "星期日",       //星期 (新增)
                "sunrise": "05:58",
                "high": "高温 23.0℃",
                "low": "低温 14.0℃",
                "sunset": "18:09",
                "aqi": 29.0,
                "fx": "西北风",
                "fl": "4-5级",
                "type": "晴",
                "notice": "愿你拥有比阳光明媚的心情"
            },
            {
                "date": "24",
                "ymd": "2018-09-22",   //年月日  (新增)
                "week": "星期一",       //星期 (新增)
                "sunrise": "05:59",
                "high": "高温 24.0℃",
                "low": "低温 15.0℃",
                "sunset": "18:07",
                "aqi": 25.0,
                "fx": "西北风",
                "fl": "<3级",
                "type": "晴",
                "notice": "愿你拥有比阳光明媚的心情"
            },
            {
                "date": "25",
                "ymd": "2018-09-22",   //年月日  (新增)
                "week": "星期二",       //星期 (新增)
                "sunrise": "06:00",
                "high": "高温 24.0℃",
                "low": "低温 16.0℃",
                "sunset": "18:05",
                "aqi": 56.0,
                "fx": "西南风",
                "fl": "<3级",
                "type": "晴",
                "notice": "愿你拥有比阳光明媚的心情"
            },
            {
                "date": "26",  
                "ymd": "2018-09-22",   //年月日  (新增)
                "week": "星期三",       //星期 (新增)
                "sunrise": "06:01",
                "high": "高温 24.0℃",
                "low": "低温 17.0℃",
                "sunset": "18:04",
                "aqi": 86.0,
                "fx": "西南风",
                "fl": "3-4级",
                "type": "阴",
                "notice": "不要被阴云遮挡住好心情"
            }
        ]
    }
}'''

UI代码

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

# Form implementation generated from reading ui file 'D:\OneDrive\CS\PyQt\checkCityWeather.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
import sys

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.verticalLayoutWidget = QtWidgets.QWidget(Form)
        self.verticalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 381, 281))
        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
        self.mainLayouy = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
        self.mainLayouy.setContentsMargins(0, 0, 0, 0)
        self.mainLayouy.setObjectName("mainLayouy")
        self.infoWin = QtWidgets.QGroupBox(self.verticalLayoutWidget)
        self.infoWin.setObjectName("infoWin")
        self.horizontalLayoutWidget = QtWidgets.QWidget(self.infoWin)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 181, 41))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.selectBar = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.selectBar.setContentsMargins(0, 0, 0, 0)
        self.selectBar.setObjectName("selectBar")
        self.label = QtWidgets.QLabel(self.horizontalLayoutWidget)
        self.label.setObjectName("label")
        self.selectBar.addWidget(self.label)
        self.cityComboBox = QtWidgets.QComboBox(self.horizontalLayoutWidget)
        self.cityComboBox.setObjectName("cityComboBox")
        self.cityComboBox.addItem("")
        self.cityComboBox.addItem("")
        self.cityComboBox.addItem("")
        self.selectBar.addWidget(self.cityComboBox)
        self.resultTextEdit = QtWidgets.QTextEdit(self.infoWin)
        self.resultTextEdit.setGeometry(QtCore.QRect(10, 60, 361, 161))
        self.resultTextEdit.setObjectName("resultTextEdit")
        self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.infoWin)
        self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(50, 230, 261, 41))
        self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.checkBtn = QtWidgets.QPushButton(self.horizontalLayoutWidget_2)
        self.checkBtn.setObjectName("checkBtn")
        self.horizontalLayout_2.addWidget(self.checkBtn)
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem)
        self.clearBtn = QtWidgets.QPushButton(self.horizontalLayoutWidget_2)
        self.clearBtn.setObjectName("clearBtn")
        self.horizontalLayout_2.addWidget(self.clearBtn)
        self.mainLayouy.addWidget(self.infoWin)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Weather Report"))
        self.infoWin.setTitle(_translate("Form", "查询天气"))
        self.label.setText(_translate("Form", "选择城市:"))
        self.cityComboBox.setItemText(0, _translate("Form", "北京"))
        self.cityComboBox.setItemText(1, _translate("Form", "天津"))
        self.cityComboBox.setItemText(2, _translate("Form", "上海"))
        self.checkBtn.setText(_translate("Form", "Go"))
        self.clearBtn.setText(_translate("Form", "Clear"))

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值