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 相关文章推荐
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
Python删除空文件和空文件夹的方法
Jul 14 Python
Python使用当前时间、随机数产生一个唯一数字的方法
Sep 18 Python
Python实现PS图像调整颜色梯度效果示例
Jan 25 Python
python微信跳一跳游戏辅助代码解析
Jan 29 Python
解决python3 pika之连接断开的问题
Dec 18 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
使用python实现简单五子棋游戏
Jun 18 Python
Python编写单元测试代码实例
Sep 10 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
用python-webdriver实现自动填表的示例代码
Jan 13 Python
使用numpy实现矩阵的翻转(flip)与旋转
Jun 03 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
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
PHP中的替代语法简介
2014/08/22 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
javascript中的float运算精度实例分析
2010/08/21 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
2017/12/11 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
python中日期和时间格式化输出的方法小结
2015/03/19 Python
Python制作刷网页流量工具
2017/04/23 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
python散点图实例之随机漫步
2018/08/27 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
矫正人员思想汇报
2014/01/08 职场文书
农村葬礼主持词
2014/03/31 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
文明单位创建材料
2014/12/24 职场文书
总结高并发下Nginx性能如何优化
2021/11/01 Servers
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python