Python中怎么用GUI编写一个天气查询桌软件
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要讲解了"Python中怎么用GUI编写一个天气查询桌软件",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Python中怎么用GUI编写一个天
千家信息网最后更新 2025年12月03日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安全错误
数据库的锁怎样保障安全
软件开发公司起什么名字好听
常州软件开发优势
华为h2288v5服务器
软件开发企业怎么税收筹划
打开数据库服务
做软件开发一个月收入多少
数据库表的别名使用
网络安全手抄报禁毒漫画
淅川软件开发设计服务至上
我的世界服务器验证
国际网络服务器
蓝厂服务器怎么样
张店服务管理crm软件开发
成都电脑软件开发定制
睢宁软件开发集团
软件开发风险计划书
计算机网络技术是c类吗
java语言在软件开发中的应用
数据库联合索引优化
商品采集软件开发教程
魔兽数据库增加回蓝速度
网络安全知识防范恶意软件
杭州工业软件开发哪家实惠
开发区评价数据库标准
南京学习网络安全
磁县县委网络安全局
gis包括哪几种数据库
信息网络安全第二世代是
web程序必须要服务器吗
网络安全教育班会笔记