第二步只是将界面绘制了出来并转换为py文件,接着我们会使用requests模块对网站发起请求,获取我们想要的数据,并显示到我们的窗口中。
首先我们试着访问一下该网址:http://www.weather.com.cn/data/sk/101010100.html 这个查的是北京的天气,是一个json格式的数据,而且还乱码了,没关系,我们等会改成utf-8就好了。 每个城市之间只是那红色的城市代码不同。 我这里只找了北京,天津,西安,上海的城市代码。所以只能查这些地区。。 如果想找你所在的城市,去网上找一下。
(, 下载次数: 0)
这是我在网上随便找的。
我们可以构造查询了连接,然后用requests进行请求。 返回json格式的数据,我们一步一步提取出来就可以了。 下面是调用的文件。
- import sys
- from PyQt5.QtWidgets import *
- 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)
-
- self.ui.clearBtn.clicked.connect(self.clearResult)
- self.ui.queryBtn.clicked.connect(self.queryWeather)
- def queryWeather(self):
-
- print('* queryWeather')
- cityName = self.ui.weatherComboBox.currentText()
- cityCode = self.transCityName(cityName)
- web = 'http://www.weather.com.cn/data/sk/' + cityCode + '.html'
- rep = requests.get(web)
- 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'
- elif cityName == '西安':
- cityCode = '101110101'
-
- return cityCode
-
- def clearResult(self):
- print('* clearResult')
- self.ui.resultText.clear()
-
- if __name__ == '__main__':
-
- app = QApplication(sys.argv)
- win = MainWindow()
- win.setObjectName("MainWindow") # 为主窗口设置对象名 为了在下面设置背景颜色
- win.setStyleSheet("#MainWindow{border-image:url(./images/python.jpg);}") # 这个图片路径是我自己的,你可以这一张你自己的图片。或者把这两行都给注释掉
- win.show()
- sys.exit(app.exec_())
复制代码
最后的界面:
(, 下载次数: 0)