github项目地址:StarMan

Python 实现天气查询的程序早已完成,近日开学无课,昨晚心血来潮想做一个较为友好的界面版本,便匆忙行动了起来。

在之前已有的程序的基础上使用Tkinter 模块实现GUI 并不是很难,但是在做的过程中《我的英雄学院》更新了,所以中途耽误了,今天早上才做好。(~.~)

代码的主体是爬虫与Tkinter。

执行程序后会先出现一个选择城市的界面,这里需要输入城市名。点击确认即会出现城市天气状况。

执行效果如下:

以下为源代码:

from tkinter import *
import urllib.request
import gzip
import json
from tkinter import messageboxroot = Tk()def main():#输入窗口root.title('天气查询')#窗口标题Label(root,text = '请输入城市').grid(row=0,column=0)#设置标签并调整位置enter = Entry(root)#输入框enter.grid(row = 0,column=1,padx = 20, pady = 20)#调整位置enter.delete(0,END)#清空输入框enter.insert(0,'湘潭')#设置默认文本#enter_text = enter.get()#获取输入框的内容
    running = 1def get_weather_data() :#获取网站数据city_name = enter.get()#获取输入框的内容url1 = 'http://wthrcdn.etouch.cn/weather_mini?city='+urllib.parse.quote(city_name)url2 = 'http://wthrcdn.etouch.cn/weather_mini?citykey=101010100'#网址1只需要输入城市名,网址2需要输入城市代码#print(url1)weather_data = urllib.request.urlopen(url1).read()#读取网页数据weather_data = gzip.decompress(weather_data).decode('utf-8')#解压网页数据weather_dict = json.loads(weather_data)#将json数据转换为dict数据if weather_dict.get('desc') == 'invilad-citykey':print(messagebox.askokcancel("xing","你输入的城市名有误,或者天气中心未收录你所在城市"))else:#print(messagebox.askokcancel('xing','bingguo'))
            show_data(weather_dict,city_name)def show_data(weather_dict,city_name):#显示数据forecast = weather_dict.get('data').get('forecast')#获取数据块root1=Tk()#副窗口root1.geometry('650x280')#修改窗口大小root1.title(city_name + '天气状况')#副窗口标题#设置日期列表for i in range(5):#将每一天的数据放入列表中LANGS = [(forecast[i].get('date'),'日期'),(forecast[i].get('fengxiang'),'风向'),(str(forecast[i].get('fengji')),'风级'),(forecast[i].get('high'),'最高温'),(forecast[i].get('low'),'最低温'),(forecast[i].get('type'),'天气')]group = LabelFrame(root1,text = '天气状况',padx = 0,pady = 0)#框架group.pack(padx=11,pady=0,side = LEFT)#放置框架for lang, value in LANGS:#将数据放入框架中c = Label(group,text = value + ': ' + lang)c.pack(anchor = W)Label(root1,text = '今日' + weather_dict.get('data').get('ganmao'),fg = 'green').place(x=40,y=20,height=40)#温馨提示Label(root1,text = "StarMan: 49star.com",fg = "green",bg = "yellow").place(x=10,y=255,width=125,height=20)#作者网站Button(root1,text = '确认并退出',width=10,command = root1.quit).place(x=500,y=230,width = 80,height=40)#退出按钮
        root1.mainloop()#布置按键    Button(root, text = "确认",width=10,command = get_weather_data)\.grid(row = 3, column=0,sticky = W, padx = 10, pady = 5)Button(root, text = '退出',width=10,command = root.quit)\.grid(row = 3, column = 1, sticky = E, padx = 10, pady = 5)if running==1:root.mainloop()if __name__ == '__main__':main()

今天海贼王更新!!共勉!

转载于:https://www.cnblogs.com/jxxclj/p/9572919.html

Python 爬虫实现天气查询(可视化界面版)相关推荐

  1. python小爬虫之天气查询

    python小爬虫之天气查询 刚开始研究爬虫,这个小程序通过抓取网页源代码,使用json解析实现了天气的查询. 1.需求分析 该博客实现了简单的天气查询功能,输入城市名称后可以查询出该城市的天气情况. ...

  2. Python爬虫、数据分析、可视化学习笔记(一、梦开始的地方)

    系列文章持续更新中...... 文章目录 一.工具及环境配置 1.Python3.8(官网下载) 2.Pycharm(官网下载) 3.Anaconda(官网下载) 4.环境配置(传送门,感谢前人栽树) ...

  3. 毕业设计-基于Python爬虫的疫情数据可视化系统

    基于Python爬虫的疫情数据可视化系统 采用ECharts+Flask+Requests架构: 源码加3105088663

  4. python实现天气数据爬取实现数据可视化和天气查询gui界面设计

    在学校大一实训中,我的实训项目就是使用python爬取天气数据并且实现gui图形界面的设计. 实训结束了,希望自己的代码可以帮助大家的学习.(代码是大一时候写的,比较青涩,大家多包涵) 第一个部分是g ...

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

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

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

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

  7. 精通python爬虫框架-精通Python爬虫框架Scrapy PDF 中文清晰版

    给大家带来的一篇关于Python爬虫相关的电子书资源,介绍了关于Python.爬虫.框架.Scrapy方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小8.6 MB,迪米特里奥斯编写,目前 ...

  8. Python爬虫大作业+数据可视化分析(抓取python职位)

    目录 一.抓取并解析数据 1.导入相关库 2.获取网页信息 3.数据清洗 4.爬取结果: ??二.保存数据 1.保存到excel中 2.保存到数据库中 ? ?3.调用 三.使用flask,实现可视化 ...

  9. Python简单的信息录入可视化界面

    1.题目 利用Python编写一个录入学生信息(姓名.年龄.性别)的可视化窗口. 2.代码 from tkinter import * import tkinter.messagebox as mes ...

最新文章

  1. html 表单内容怎么获取不到,jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办?...
  2. AI芯片的未来之战:“霸主”英伟达真就无人能挡了吗?
  3. Py之pyquery:pyquery的简介、安装、使用方法之详细攻略
  4. Python3算法基础练习:编程100例(11 ~ 15)
  5. Python3可变字符串代码实现
  6. stm32F103驱动ADS1115程序-4通道可用-ALERT中断可用-ADC芯片,应该是最全了
  7. 兄弟j220怎么清零_BROTHER 兄弟一体机 复位清除计数器
  8. js一键批量打印_前端vue项目实现批量打印功能
  9. c# 2进制 转16进制 ,16进制转2进制
  10. chrome 谷歌idm视频下载插件
  11. xp系统打开sql服务器不可用,xp系统安装sql2000个人版无反应
  12. 前缀学习第二课(下)
  13. 使用 Java 进行 HL7 编程
  14. 【心理咨询师考试笔记】基础理论(四)——发展心理学
  15. 新年PHP微信抽奖系统源码开源二开版带完整后台,支持修改开发
  16. 泰然金融牵手快公益 花儿计划国学课入畲乡
  17. P1931 套利-SPFA最长路与环的判断
  18. Common sense-墨菲定律
  19. 计算机二级web知识点,计算机二级WEB考试主要考哪些内容?
  20. Linux常用命令——sysctl命令

热门文章

  1. JavaScript基础:比较运算符——==与 ===;!=与!==
  2. 编译Hadoop源码
  3. Centos7设置IP为固定值
  4. Linux下目录/文件颜色的含义
  5. redis入门(数据类型)
  6. ASP.NET Core EFCore 之Code First
  7. 23 Python常用模块(一)
  8. 记前端项目首屏加载优化(网络篇)
  9. tensorflow.reshap(tensor,shape,name)的使用说明
  10. .net IL 指令速查