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 xlrd读取excel日期类型的2种方法
Apr 28 Python
详解Python中contextlib上下文管理模块的用法
Jun 28 Python
详解Python中的array数组模块相关使用
Jul 05 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
python通过配置文件共享全局变量的实例
Jan 11 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 Python
基于python实现matlab filter函数过程详解
Jun 08 Python
python使用建议与技巧分享(一)
Aug 17 Python
在python中对于bool布尔值的取反操作
Dec 11 Python
Python+Appium实现自动抢微信红包
May 21 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 Python
Pandas 数据编码的十种方法
Apr 20 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入门教程 精简版
2009/12/13 PHP
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
微信小程序 教程之列表渲染
2016/10/18 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
JavaScript中创建原子的方法总结
2018/08/26 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
tweenjs缓动算法的使用实例分析
2019/08/26 Javascript
Python中用Descriptor实现类级属性(Property)详解
2014/09/18 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
2018/11/20 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
学生自我鉴定范文
2013/10/04 职场文书
数学系个人求职信范文
2014/01/30 职场文书
创意广告词
2014/03/17 职场文书
毕业论文评语大全
2014/04/29 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
检讨书范文300字
2015/01/28 职场文书
比赛主持人开场白
2015/05/29 职场文书