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编写暴力破解FTP密码小工具
Nov 19 Python
python关键字and和or用法实例
May 28 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
Jul 06 Python
5款非常棒的Python工具
Jan 05 Python
python 监听salt job状态,并任务数据推送到redis中的方法
Jan 14 Python
python爬虫实现中英翻译词典
Jun 25 Python
Python Web程序搭建简单的Web服务器
Jul 31 Python
PyQt5实现画布小程序
May 30 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
Django URL参数Template反向解析
Nov 24 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
Feb 26 Python
Python软件包安装的三种常见方法
Jul 07 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
一个显示天气预报的程序
2006/10/09 PHP
php 解决旧系统 查出所有数据分页的类
2012/08/27 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
js对数字的格式化使用说明
2011/01/12 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
php使用递归与迭代实现快速排序示例
2014/01/23 Python
python通过函数属性实现全局变量的方法
2015/05/16 Python
python实现八大排序算法(2)
2017/09/14 Python
Python requests库用法实例详解
2018/08/14 Python
Apache部署Django项目图文详解
2019/07/30 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
Python3实现英文字母转换哥特式字体实例代码
2020/09/01 Python
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
体育专业自荐书
2014/05/29 职场文书
入党综合考察材料
2014/06/02 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
社会实践的活动方案
2014/08/22 职场文书
专项资金申请报告
2015/05/15 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
JS函数式编程实现XDM一
2022/06/16 Javascript