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中使用PIL库实现图片高斯模糊实例
Feb 08 Python
python实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 Python
实例讲解python中的协程
Oct 08 Python
Django保护敏感信息的方法示例
May 09 Python
python字符串替换第一个字符串的方法
Jun 26 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
pytorch逐元素比较tensor大小实例
Jan 03 Python
Python实现动态给类和对象添加属性和方法操作示例
Feb 29 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
python中的装饰器该如何使用
Jun 18 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中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
一个简单的js动画效果代码
2010/07/20 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
jquery 实现两Select 标签项互调示例代码
2014/09/25 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
微信小程序实现之手势锁功能实例代码
2018/07/19 Javascript
详解操作虚拟dom模拟react视图渲染
2018/07/25 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
vue使用echarts画组织结构图
2021/02/06 Vue.js
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
python多线程扫描端口示例
2014/01/16 Python
查看Django和flask版本的方法
2018/05/14 Python
Python循环实现n的全排列功能
2019/09/16 Python
三星美国官网:Samsung美国
2017/02/06 全球购物
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
大学学习生活感言
2014/01/18 职场文书
电气工程自动化求职信
2014/03/14 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
广告宣传策划方案
2014/05/21 职场文书
客户经理岗位职责
2015/01/31 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书