效果预览:

一、获取天气信息

使用python获取天气有两种方式。

1)是通过爬虫的方式获取天气预报网站的HTML页面,然后使用xpath或者bs4解析HTML界面的内容。

2)另一种方式是根据天气预报网站提供的API,直接获取结构化数据,省去了解析HTML页面的步骤。

本例使用的是第二种方式,请求地址为:

http://wthrcdn.etouch.cn/weather_mini?citykey=城市代码

部分城市代码对应:

北京 101010100天津 101030100
上海 101020100

浏览器返回的天津气温情况如下,该信息其实就是一个JSON字符串,格式化之后的样子如下所示:

{    "data": {        "yesterday": {            "date": "1日星期五",            "high": "高温 17℃",            "fx": "东北风",            "low": "低温 8℃",            "fl": "",            "type": "多云"        },        "city": "北京",        "forecast": [            {                "date": "2日星期六",                "high": "高温 14℃",                "fengli": "",                "low": "低温 8℃",                "fengxiang": "北风",                "type": "小雨"            },        ],        "ganmao": "昼夜温差较大,较易发生感冒,请适当增减衣服。体质较弱的朋友请注意防护。",        "wendu": "12"    },    "status": 1000,    "desc": "OK"}

获取天气的主要代码如下:

# cityCode 替换为具体某一个城市的对应编号# 1、发送请求,获取数据url = f'http://wthrcdn.etouch.cn/weather_mini?citykey={cityCode}'res = requests.get(url)res.encoding = 'utf-8'res_json = res.json()# 2、数据格式化data = res_json['data']city = f"城市:{data['city']}\n"  # 字符串格式化的一种方式 f"{}" 通过字典传递值today = data['forecast'][0]date = f"日期:{today['date']}\n"  # \n 换行now = f"实时温度:{data['wendu']}度\n"temperature = f"温度:{today['high']} {today['low']}\n"fengxiang = f"风向:{today['fengxiang']}\n"type = f"天气:{today['type']}\n"tips = f"贴士:{data['ganmao']}\n"result = city + date + now + temperature + fengxiang + type + tipsprint(result)

二、界面的实现

1、使用Qt Designer绘制窗口,保存为ui文件

2、把ui文件转为py文件

1)在生成的ui文件目录下,打开cmd

2)输入以下命令(注意替换名称)

pyuic5 -o destination.py source.ui

3、信号与槽函数的连接

# 1、清空按钮与对应函数连接clearBtn.clicked.connect(widget.clearResult)# 2、查询按钮与对应函数连接queryBtn.clicked.connect(widget.queryWeather)

4、调用主窗口类

import sys     from PyQt5.QtWidgets import QApplication , QMainWindowfrom WeatherWin import Ui_widgetimport requestsimport jsonclass MainWindow(QMainWindow ):    def __init__(self, parent=None):            super(MainWindow, self).__init__(parent)        self.ui = Ui_widget()        self.ui.setupUi(self)        # 通过文本框传入想要搜索的城市名称:天津        cityName = self.ui.weatherComboBox.currentText()        # 获取天气部分省略        # 在文本框显示查询结果        self.ui.resultText.setText(result)    def clearResult(self):        print('* clearResult  ')        self.ui.resultText.clear()if __name__=="__main__":      app = QApplication(sys.argv)      win = MainWindow()      win.show()      sys.exit(app.exec_())

以上,提供了获取天气(GUI)程序的主要过程及部分源码。

-END-

全新打卡学习模式每天30分钟21天学会Python编程

世界正在奖励坚持学习的人!

获取界面url_好冷阿|编写一个自己的天气查询应用(可视化界面),提醒她注意保暖!...相关推荐

  1. 使用Flutter编写一个简单的天气查询App

    使用Flutter编写一个简单的天气查询App Flutter项目目录分析 入口函数 home:主页面 编写天气应用 网络请求 数据解析 布局编写 Flutter里基础的Widget 上 中 下 Fl ...

  2. aspnet登录界面代码_使用Python编写一个QQ办公版的图形登录界面!

    最近,QQ的办公版本--TIM进行了一次更新升级.本次更新升级大幅修改了界面的样式,看起来更加的清爽.简洁和高效了. 这种界面州的先生还是比较喜欢的,没有QQ那么花里胡哨,也比微信那些残缺的功能更加丰 ...

  3. 1.简述一个Activity跳转到另一个Activity时,两个Activity生命周期方法的执行过程。2.编写一个程序,要求在第一个界面中输入两个数字,在第二个界面显示第一个界面两个数字的和。

    1.简述一个Activity跳转到另一个Activity时,两个Activity生命周期方法的执行过程. 首先,我创建了一个MainActivity和SecondActivity两个Activity. ...

  4. QT编写一个简单的包含输入输出的C++界面程序

    QT官网下载 文章目录 一.介绍 1.创建项目 2..ui具体内容 二.设计 1.手动添加界面,代码实现连接 (1)ui部分 (2)代码部分 (3)效果 2.代码添加界面 (1)代码文件 三.源文件 ...

  5. python实现qq登录界面_使用Python编写一个QQ办公版的图形登录界面!

    最近,QQ的办公版本--TIM进行了一次更新升级.本次更新升级大幅修改了界面的样式,看起来更加的清爽.简洁和高效了. 这种界面州的先生还是比较喜欢的,没有QQ那么花里胡哨,也比微信那些残缺的功能更加丰 ...

  6. python制作qq登录界面_使用Python编写一个QQ办公版的图形登录界面

    最近,QQ的办公版本--TIM进行了一次更新升级.本次更新升级大幅修改了界面的样式,看起来更加的清爽.简洁和高效了. 这种界面州的先生还是比较喜欢的,没有QQ那么花里胡哨,也比微信那些残缺的功能更加丰 ...

  7. java 带界面的小程序_JAVA 编写一个带有窗口的应用程序

    展开全部 源代码如下: Tetres_windows.java/** 俄罗斯方块62616964757a686964616fe58685e5aeb931333431366333的窗体*///impor ...

  8. MySQL数据查询(可视化界面 MySQL Workbench)

    一.SELECT语句 Select子句:指定要显示的列或表达式 From子句:指定查询数据来源的表或视图,可以指定一个表,也可以指定多个表 Where子句:指定选择行的条件 Group by子句:指定 ...

  9. 使用 Vanilla JavaScript 框架创建一个简单的天气应用

    大家好,不知道大家听说过 Vanilla JavaScript 这款框架吗?最近我在浏览国外的一些技术网站时,这个词出现的频率实在是太高了,好多框架都宣称自己是基于 Vanilla JavaScrip ...

最新文章

  1. console js刷新页面_Console.js使用说明
  2. 如何利用大数据进行精准营销
  3. Collection集合--ArrayList源码读后感总结
  4. python队列join
  5. java 流 复制文件_【Java】使用字节流复制文件
  6. redhat6.3的linux内核版本,1-6-RHEL6.3-内核升级(Red Hat Enterprise Linux Server6.3)@树袋飘零...
  7. java 获取内存大小_JVM面试题扩展:Java代码在JVM中的执行流程
  8. python伪造邮件发件地址_Python:向多个地址发送电子邮件
  9. c++进阶(十八)stack容器和queue容器
  10. yarn 安装使用小记
  11. 开关电源(DC/DC)和线性电源(LDO低压差线性稳压器)的区别
  12. java u盘检测工具,BadUSB测试记录
  13. 如何使用手机裁剪图片大小?
  14. NCBI、UniProt、RCSB PDB的部分功能使用(蛋白质晶体结构、蛋白质氨基酸序列、基因序列、序列比对等)
  15. 实现ppt幻灯片播放倒计时
  16. EXCEL转PDF,JACOB,生成checkbox
  17. Spring缺少aspectjweaver.jar异常
  18. 计算机科学与工程6,2019上海软科世界一流学科排名计算机科学与工程专业排名哈佛大学排名第6...
  19. 小苹果活动助手1.27最新版电脑版
  20. 怎么样用计算机打字,五步教你如何电脑快速打字!

热门文章

  1. Vmware虚拟机不能使用键盘的解决方法
  2. docker删除为none的镜像
  3. CSS3(七) 前端预处理技术(Less、Sass、CoffeeScript)
  4. constellio——基于solr的开源搜索引擎系统源码研究(五)
  5. 通过UserAgent判断智能设备(Android,IOS)
  6. 计算机网络即时通信系统设计_天天玩微信,Spring Boot 开发私有即时通信系统了解一下...
  7. ubuntu在 hdfs上创建一个文件夹_NAS上如何创建和使用加密文件夹?
  8. Python稳基修炼之计算机等级考试易错概念题4(含答案与解析)
  9. python 密度聚类 使用_使用python+sklearn实现硬币图像上的结构化Ward层次聚类演示...
  10. Python小屋在线练习与刷题软件重要升级