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 相关文章推荐
Django中使用locals()函数的技巧
Jul 16 Python
Python构造自定义方法来美化字典结构输出的示例
Jun 16 Python
python xml解析实例详解
Nov 14 Python
Python语言实现将图片转化为html页面
Dec 06 Python
python 中if else 语句的作用及示例代码
Mar 05 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
python+flask实现API的方法
Nov 21 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
Python如何设置指定窗口为前台活动窗口
Aug 12 Python
python实现excel公式格式化的示例代码
Dec 23 Python
在pycharm中无法import所安装的库解决方案
May 31 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
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
php Hex RGB颜色值互换的使用
2013/05/10 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
PHP内核探索之变量
2015/12/22 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
Vue.js子组件向父组件通信的方法实例代码详解
2018/12/10 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
jQuery实时统计输入框字数及限制
2020/06/24 jQuery
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
python 图片验证码代码分享
2012/07/04 Python
django使用html模板减少代码代码解析
2017/12/12 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
python生成随机红包的实例写法
2019/09/02 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
会议邀请函范文
2014/01/09 职场文书
上海世博会口号
2014/06/19 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs