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 相关文章推荐
pyv8学习python和javascript变量进行交互
Dec 04 Python
Python打包可执行文件的方法详解
Sep 19 Python
Python用threading实现多线程详解
Feb 03 Python
virtualenv实现多个版本Python共存
Aug 21 Python
python导入csv文件出现SyntaxError问题分析
Dec 15 Python
Python模块搜索路径代码详解
Jan 29 Python
对numpy中shape的深入理解
Jun 15 Python
用Python配平化学方程式的方法
Jul 20 Python
Python多线程模块Threading用法示例小结
Nov 09 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
Aug 07 Python
Python 列表推导式需要注意的地方
Oct 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
php防注
2007/01/15 PHP
php debug 安装技巧
2011/04/30 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
javascript void(0)的妙用
2009/10/21 Javascript
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
常用的js方法合集
2017/03/10 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
js实现左右轮播图
2020/01/09 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
Python中实现结构相似的函数调用方法
2015/03/10 Python
python2.7的编码问题与解决方法
2016/10/04 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
python实现代码统计程序
2019/09/19 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
金融专业个人求职信范文
2013/11/28 职场文书
安全标语口号
2014/06/09 职场文书
导游词之西湖雷峰塔
2019/09/18 职场文书