Python中怎么用GUI编写一个天气查询桌软件
发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,这篇文章主要讲解了"Python中怎么用GUI编写一个天气查询桌软件",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python中怎么用GUI编写一个天
千家信息网最后更新 2025年02月09日Python中怎么用GUI编写一个天气查询桌软件
这篇文章主要讲解了"Python中怎么用GUI编写一个天气查询桌软件",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python中怎么用GUI编写一个天气查询桌软件"吧!
一、实现效果
二、基本思路
导入用到的库
import requestsfrom lxml import etreeimport reimport tkinter as tkfrom PIL import Image, ImageTkfrom xpinyin import Pinyin
1. 爬虫部分
目标url:https://lishi.tianqi.com/
该网站提供了全国34个省、市所属的2290个地区的历史天气预报查询,数据来源于城市当天的天气信息,可以查询到历史天气气温,历史风向,历史风力等历史天气状况。
分析网页可以发现,某个地区、某个月的所有天气数据的url为:https://lishi.tianqi.com/ + 地区名字的拼音 + '/' + 年月.html。根据用户输入的地区和时间,进行字符串的处理,构造出url,用于request请求有该月所有天气信息的页面,获取响应后Xpath定位提取用户输入的要查询的日期的天气信息,查询结果显示在tkinter界面。
爬虫代码如下:
def spider(): headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24', "referer": "https://lishi.tianqi.com/chengdu/index.html" } p = Pinyin() place = ''.join(p.get_pinyin(b1.get()).split('-')) # 获取地区文本框的输入 变为拼音 # 处理用户输入的时间 # 规定三种格式都可以 2018/10/1 2018年10月1日 2018-10-1 date = b2.get() # 获取时间文本框的输入 if '/' in date: tm_list = date.split('/') elif '-' in date: tm_list = date.split('-') else: tm_list = re.findall(r'\d+', date) if int(tm_list[1]) < 10: # 1-9月 前面加 0 tm_list[1] = f'0{tm_list[1]}' # 分析网页发现规律 构造url # 直接访问有该月所有天气信息的页面 提高查询效率 url = f"https://lishi.tianqi.com/{place}/{''.join(tm_list[:2])}.html" resp = requests.get(url, headers=headers) html = etree.HTML(resp.text) # xpath定位提取该日天气信息 info = html.xpath(f'//ul[@class="thrui"]/li[{int(tm_list[2])}]/div/text()') # 输出信息格式化一下 info1 = ['日期:', '最高气温:', '最低气温:', '天气:', '风向:'] datas = [i + j for i, j in zip(info1, info)] info = '\n'.join(datas) t.insert('insert', ' 查询结果如下 \n\n') t.insert('insert', info) print(info)
2. tkinter界面
代码如下:
def get_image(file_nam, width, height): im = Image.open(file_nam).resize((width, height)) return ImageTk.PhotoImage(im)win = tk.Tk()# 设置窗口title和大小win.title('全国各地历史天气查询系统')win.geometry('500x500')# 画布 设置背景图片canvas = tk.Canvas(win, height=500, width=500)im_root = get_image('test.jpg', width=500, height=500)canvas.create_image(250, 250, image=im_root)canvas.pack()# 单行文本L1 = tk.Label(win, bg='yellow', text="地区:", font=("SimHei", 12))L2 = tk.Label(win, bg='yellow', text="时间:", font=("SimHei", 12))L1.place(x=85, y=100)L2.place(x=85, y=150)# 单行文本框 可采集键盘输入b1 = tk.Entry(win, font=("SimHei", 12), show=None, width=35)b2 = tk.Entry(win, font=("SimHei", 12), show=None, width=35)b1.place(x=140, y=100)b2.place(x=140, y=150)# 设置查询按钮 点击 调用爬虫函数实现查询a = tk.Button(win, bg='red', text="查询", width=25, height=2, command=spider)a.place(x=160, y=200)# 设置多行文本框 宽 高 文本框中字体 选中文字时文字的颜色t = tk.Text(win, width=30, height=8, font=("SimHei", 18), selectforeground='red') # 显示多行文本t.place(x=70, y=280)# 进入消息循环win.mainloop()
感谢各位的阅读,以上就是"Python中怎么用GUI编写一个天气查询桌软件"的内容了,经过本文的学习后,相信大家对Python中怎么用GUI编写一个天气查询桌软件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
天气
查询
文本
信息
历史
地区
输入
天气查询
软件
时间
气温
爬虫
用户
学习
代码
全国
内容
思路
拼音
数据
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
h3c服务器显卡不识别
软件开发趋势2022
内蒙古潮流软件开发价格标准
软件开发过程中的伦理事件
剑三无法登陆服务器
互联网科技 旅游
门禁管理服务器t4900
海外免费服务器端口
运动社交软件开发背景
黑龙江网络安全举报
服务器内存高并发
ug编辑加工数据库设置与备份
数据库的约束有什么
软件开发岗校招
绿书签2017网络安全
数据库加解密心得体会
远程鉴定服务器
网络安全报考的是什么科
软件开发行业付费
黄岛区电商软件开发企业
上海直销软件开发商
阳谷县网络安全局电话
互联网科技 旅游
服务器设置
上海网络安全性
ad 服务器
数据库系统基础知识
信息和网络安全有什么区别
服务器怎么增加声音
三星服务器内存中国总代