python可视化爬虫界面之天气查询


Posted in Python onJuly 03, 2019

执行效果如下:

python可视化爬虫界面之天气查询

python可视化爬虫界面之天气查询

from tkinter import *
import urllib.request
import gzip
import json
from tkinter import messagebox
root = Tk()
def main():
  # 输入窗口
  root.title('Python学习交流群:973783996') # 窗口标题
  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, 'Python学习交流群:973783996') # 设置默认文本
  # enter_text = enter.get()#获取输入框的内容
   running = 1
   def 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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 可爱的大小写
Sep 06 Python
Python入门_浅谈数据结构的4种基本类型
May 16 Python
利用python实现简单的循环购物车功能示例代码
Jul 05 Python
Python中字典和集合学习小结
Jul 07 Python
python+pyqt5实现KFC点餐收银系统
Jan 24 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
python3读取autocad图形文件.py实例
Jun 05 Python
Python实现画图软件功能方法详解
Jul 28 Python
使用PyCharm安装pytest及requests的问题
Jul 31 Python
Anaconda使用IDLE的实现示例
Sep 23 Python
python读写配置文件操作示例
Jul 03 #Python
Python正则表达式匹配数字和小数的方法
Jul 03 #Python
在python中利用numpy求解多项式以及多项式拟合的方法
Jul 03 #Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
Jul 03 #Python
Python read函数按字节(字符)读取文件的实现
Jul 03 #Python
在Python中COM口的调用方法
Jul 03 #Python
python字符串中匹配数字的正则表达式
Jul 03 #Python
You might like
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
全面了解javascript三元运算符
2016/06/27 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
2017/02/22 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
python中的内置函数getattr()介绍及示例
2014/07/20 Python
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
python 编写简单网页服务器的实例
2018/06/01 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
医科大学毕业生自荐信
2014/02/03 职场文书
带病坚持工作事迹
2014/05/03 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
sass 常用备忘案例详解
2021/09/15 HTML / CSS