效果预览:

一、获取天气信息

使用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": "<![CDATA[<3级]]>",
            "type": "多云"
        },
        "city": "北京",
        "forecast": [
            {
                "date": "2日星期六",
                "high": "高温 14℃",
                "fengli": "<![CDATA[<3级]]>",
                "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']}
"  
# 字符串格式化的一种方式 f"{}" 通过字典传递值

today = data['forecast'][0]
date = f"日期:{today['date']}
"  # 
 换行
now = f"实时温度:{data['wendu']}度
"
temperature = f"温度:{today['high']} {today['low']}
"
fengxiang = f"风向:{today['fengxiang']}
"
type = f"天气:{today['type']}
"
tips = f"贴士:{data['ganmao']}
"

result = city + date + now + temperature + fengxiang + type + tips

print(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 , QMainWindow
from WeatherWin import Ui_widget
import requests
import json

class 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)程序的主要过程及部分源码。

1、获取天气信息

2、绘制可视化界面

3、把ui文件转成py文件

4、信号与槽

5、调用主窗口类

用 Python 编写一个天气查询应用相关推荐

  1. 用 Python 编写一个天气查询应用 pyqt5

    效果预览: ! 一.获取天气信息 使用python获取天气有两种方式. 1)是通过爬虫的方式获取天气预报网站的HTML页面,然后使用xpath或者bs4解析HTML界面的内容. 2)另一种方式是根据天 ...

  2. python天气预报界面_Python开发,用GUI编写一个天气查询桌软件

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于快学Python ,作者叶庭云 刚接触Python的新手.小白,可以复制下面的链接去 ...

  3. 用Python编写一个ISBN查询工具,秒查图书信息

    目录 1.引言: 2.正文: 3.实例分析: 4.总结: getnameformisbn.py 1.引言: 2.正文: ISBN查询工具通常用于图书管理.图书销售.图书收集和阅读等场景.以下是一些具体 ...

  4. python查天气预报_Python编写一个天气预报查询系统

    Python编写一个天气预报查询系统 学了Python这么久 可以用它来做许多好玩的小程序哦! 这里给 大家做了个查询天气预报的小程序! 可以查询未来几天的天气! 需要大家自己修改下代码即可! 首先我 ...

  5. 使用python编写一个完整的接口自动化用例

    使用python编写一个完整的接口自动化用例 以聚合数据的 查询天气接口为例: import requestsclass HttpRequests: def __init__(self,url, pa ...

  6. 基于python的天气预报系统,基于python编写的天气抓取程序

    以前一直使用中国天气网的天气预报组件都挺好,可是自从他们升级组件后数据加载变得非常不稳定,因为JS的阻塞常常导致网站打开速度很慢.为了解决这个问题决定现学现用python编写一个抓取程序,每天定时抓取 ...

  7. Python编写一个简单的百度搜索应用

    由于天气因素,无法外出,在家闲来无事,使用Python编写一个简单的百度搜索应用. 功能:打开默认浏览器,使用百度进行搜索 Python:2.7.13 第三方库:pyinstaller(打包软件) 工 ...

  8. 基于Python编写一个B站全自动抽奖的小程序

    本文将利用Python编写一个B站全自动抽奖的小程序,可以实时监控自己关注的UP主,如果关注的UP主中有人发布了抽奖的动态,就自动参与这个抽奖.这样就能不错过任何一个可以暴富的机会了.需要的可以参考一 ...

  9. python软件怎么用-如何使用Python编写一个桌面软件系统?步骤有哪些

    建议直接用python编写一个网页服务器,然后就在本机用浏览器来使用. 简单介绍一下这样做的好处: [1]python的桌面GUI模块都不太好用,比如pyQT需要额外安装很大的QT,tkinter则相 ...

最新文章

  1. 生成验证码点击可刷新
  2. LeaFlet学习之结合turf.js生成简单的等值线demo
  3. 学习笔记~~~~~python基础
  4. android nio debug模式正常 release包crash_Flutter包大小治理上的探索与实践
  5. git 命令详解和常见问题解决
  6. HTML跳转为啥会404,为什么网页会出现404 not found?
  7. 新一代Spring Web框架WebFlux!
  8. Linux移植随笔:git的使用
  9. oracle迁移mysql注意_从MySQL到ORACLE程序迁移的注意事项
  10. java语言中 负责并发编程的机制是_Java并发编程艺术-并发机制的底层原理实现...
  11. CVPR2022论文列表(中英对照)
  12. java将汉字字符串转换为拼音(包含多音字)
  13. 常用实验设计方法有哪些?
  14. 前端三大主流框架的区别
  15. 用python根据最新的汇率,假设你要出国留学要换外币,输入一定数量的人民币,比如1000元人民币, 按照中国银行的现钞卖出价,输出可换到对应的加元和澳元分别是多少。
  16. Sublime 打开文件中文乱码
  17. 送给女朋友的圣诞节电子贺卡源代码,圣诞节快乐代码
  18. P1217 [USACO1.5]回文质数 Prime Palindromes
  19. ASP.NET WEB API微信支付通知接口,返回xml数据,微信服务器不识别问题
  20. Virtualization——虚拟化技术

热门文章

  1. LeetCode: Sort List 解题报告
  2. 不聊webpack配置,来说说它的原理
  3. 关于获取oracle中数据变更的时间戳的探索(待更新)
  4. Spring MVC__自定义日期类型转换器
  5. Tomcat集群实现源码级别剖析
  6. jquery如何获取第一个或最后一个子元素?
  7. STL --- UVA 123 Searching Quickly
  8. Makefile for Sphinx documentation
  9. 安装nodejs express框架时express命令行无效
  10. Introduction-To-Signal-Processingorfanidis-i2sp