博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PyQt5使用http请求获取天气
阅读量:7249 次
发布时间:2019-06-29

本文共 5531 字,大约阅读时间需要 18 分钟。

weather.py

from PyQt5.QtWidgets import *from PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtNetwork import *import widgetimport sysclass MyWeather(QWidget):    def __init__(self, parent = None):        super().__init__(parent)        self.mywidget = widget.Ui_Widget()        self.mywidget.setupUi(self)        self.manager = QNetworkAccessManager(self)        self.manager.finished.connect(self.replyFinished)        self.mywidget.pushButton.clicked.connect(self.request)    def replyFinished(self, reply):        str1 = reply.readAll()        str2 = bytes.decode(str1.data(),encoding='utf8')        self.mywidget.textBrowser.setText(str2)        err = QJsonParseError()        json_recev = QJsonDocument.fromJson(str1,err)        if not json_recev.isNull():            myobject = json_recev.object()            if 'data' in myobject:                myvalue = myobject['data']                if myvalue.isObject():                    myobject_data = myvalue.toObject()                    if 'forecast' in myobject_data:                        value = myobject_data['forecast']                        if value.isArray():                            value1 = value.toArray()[0].toObject()                            self.tianqi = value1['type'].toString()                            self.mywidget.lineEdit_2.setText(self.tianqi)                            low = value1['low'].toString()                            high = value1['high'].toString()                            self.wendu = low[2:] + '-' + high[2:]                            self.mywidget.lineEdit_3.setText(self.wendu)                            fengxiang = value1['fengxiang'].toString()                            fengli = value1['fengli'].toString()                            self.fengli = fengxiang + fengli[9:-3]                            self.mywidget.lineEdit_4.setText(self.fengli)        reply.deleteLater()    def request(self):        city = self.mywidget.lineEdit.text() #str        pre = 'http://wthrcdn.etouch.cn/weather_mini?city='        res = pre + city        print(res)        url = QUrl(res)        self.manager.get(QNetworkRequest(url))if __name__ == '__main__':    app = QApplication(sys.argv)    weather = MyWeather()    weather.show()    sys.exit(app.exec_())

widget.py

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'widget.ui'## Created by: PyQt5 UI code generator 5.12.1## WARNING! All changes made in this file will be lost!from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Widget(object):    def setupUi(self, Widget):        Widget.setObjectName("Widget")        Widget.resize(400, 300)        self.pushButton = QtWidgets.QPushButton(Widget)        self.pushButton.setGeometry(QtCore.QRect(300, 40, 75, 23))        self.pushButton.setObjectName("pushButton")        self.textBrowser = QtWidgets.QTextBrowser(Widget)        self.textBrowser.setGeometry(QtCore.QRect(20, 10, 256, 161))        self.textBrowser.setObjectName("textBrowser")        self.formLayoutWidget = QtWidgets.QWidget(Widget)        self.formLayoutWidget.setGeometry(QtCore.QRect(50, 179, 160, 111))        self.formLayoutWidget.setObjectName("formLayoutWidget")        self.formLayout = QtWidgets.QFormLayout(self.formLayoutWidget)        self.formLayout.setContentsMargins(11, 11, 11, 11)        self.formLayout.setSpacing(6)        self.formLayout.setObjectName("formLayout")        self.label = QtWidgets.QLabel(self.formLayoutWidget)        self.label.setObjectName("label")        self.formLayout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.label)        self.lineEdit = QtWidgets.QLineEdit(self.formLayoutWidget)        self.lineEdit.setObjectName("lineEdit")        self.formLayout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.lineEdit)        self.label_2 = QtWidgets.QLabel(self.formLayoutWidget)        self.label_2.setObjectName("label_2")        self.formLayout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.label_2)        self.lineEdit_2 = QtWidgets.QLineEdit(self.formLayoutWidget)        self.lineEdit_2.setObjectName("lineEdit_2")        self.formLayout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.lineEdit_2)        self.label_3 = QtWidgets.QLabel(self.formLayoutWidget)        self.label_3.setObjectName("label_3")        self.formLayout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.label_3)        self.lineEdit_3 = QtWidgets.QLineEdit(self.formLayoutWidget)        self.lineEdit_3.setObjectName("lineEdit_3")        self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.lineEdit_3)        self.label_4 = QtWidgets.QLabel(self.formLayoutWidget)        self.label_4.setObjectName("label_4")        self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.label_4)        self.lineEdit_4 = QtWidgets.QLineEdit(self.formLayoutWidget)        self.lineEdit_4.setObjectName("lineEdit_4")        self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.lineEdit_4)        self.retranslateUi(Widget)        QtCore.QMetaObject.connectSlotsByName(Widget)    def retranslateUi(self, Widget):        _translate = QtCore.QCoreApplication.translate        Widget.setWindowTitle(_translate("Widget", "Widget"))        self.pushButton.setText(_translate("Widget", "获取天气"))        self.label.setText(_translate("Widget", "城市"))        self.label_2.setText(_translate("Widget", "天气"))        self.label_3.setText(_translate("Widget", "温度"))        self.label_4.setText(_translate("Widget", "风力"))

效果图:

转载于:https://www.cnblogs.com/ACPIE-liusiqi/p/10636594.html

你可能感兴趣的文章
95%的技术面试必考的JVM知识点都在这,另附加分思路!
查看>>
日期类问题
查看>>
区块链入门之基础知识
查看>>
mysql锁(Innodb)
查看>>
小程序开发之影分身术
查看>>
磨刀霍霍:爬爬爬爬爬爬虫爬起来~
查看>>
RxJava中的Observable,多Subscribers
查看>>
I/O模型和Java NIO源码分析
查看>>
第二天-《企业应用架构模式》-组织领域逻辑
查看>>
日志服务与SIEM(如Splunk)集成方案实战
查看>>
解决packet_write_wait: Connection to...: Broken pipe
查看>>
图学ES6-3.变量的解构赋值
查看>>
web3j的maven插件
查看>>
帮你理清React的生命周期
查看>>
堆和堆排序
查看>>
新手也能看懂,消息队列其实很简单
查看>>
全网稀缺的快应用开源项目-熊宝儿歌故事QuickApp
查看>>
【大数据实践】KSQL流处理——如何将多个STREAM输出到一个TOPIC
查看>>
Vue组件通信的几种方式
查看>>
09.Java数据算法
查看>>