Python学习,第九课(巩固tkinter,为爬虫加上界面)

本节课讲述了如何在Python中使用tkinter库为爬虫程序添加界面,重点是Combobox组件实现城市选择,Listbox组件显示多行天气信息。通过Combobox的.bind()方法监听选择变化,使用lambda更新市区列表,并在程序开始时初始化市区列表。最终实现了一个流畅的天气查询界面。
摘要由CSDN通过智能技术生成

让使用更简单,是程序存在的理由。

上一节课我们完成了一个自动爬取全省天气的脚本。
那么在本节课中,结合上一节学习的思路,我们应该给程序加上界面了。
虽然经过上一节双色球彩票程序的学习内容来看,可视化界面可以通过各种控件来实现规范用户操作的能力,并且让使用更加简单。
那么这节课,我们就来实现一个可以爬取指定市区天气的可视化程序。

基础知识

考虑到城市的选择不能采取滑轨的形式,所以我们能联想到最直接的就是下拉菜单,在html语言中是select标签。那么在tkinter库中,它是:
Combobox:实现下拉菜单
可以通过设置 ‘value’ 来设定下拉菜单的内容
还可以通过 .current() 方法来设置默认选项,默认选择第一个就填写0即可。

初步尝试

上节课我们已经把各个不同模块都封装到了不同的方法中,在这一节课中,首先要做的是把上节课的显示部分也封装到方法里,然后制作一个简单的界面。
因为是在上节课基础上做界面,那么我们先还是实现查询一个省的所有天气,考虑到要显示多行数据,那么我们这使用一个可显示多行信息的组件:
Listbox:显示多行信息,通过 .insert() 方法添加要显示的信息。
由于改造部分不多,所以直接贴上源码,各位同学可以打开两个页面做代码对比:

#encoding: utf-8

from urllib import request
from urllib import parse
import json
from tkinter import *
from tkinter import ttk

#数据爬虫
def getData(Request_URL):
	header = {
   
		"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0",
	}

	req = request.Request(url = Request_URL, headers = header)
	res = request.urlopen(req)

	str_json = res.read().decode('utf-8')
	myjson = json.loads(str_json)

	return(myjson['data'])
#分隔城市及编号信息
def Separate_data(bigList):
	answerList = {
   }

	tempList = bigList.split('|')
	for i in range(0, len(tempList)):
		bh, name = tempList[i].split(',')
		answerList.update({
   name : bh})

	return(answerList)
#主运行程序
def runThis():
#生成要查询的城市列表
	new_URL = Request_URL_China + "/" + cityList[topCombobox.get()]

	alist = Separate_data(getData(new_URL))
#遍历查询每个城市的天气信息
	for i in (alist):
		weather_Data = []
		weather_URL = "https://weather.cma.cn/api/now/" + alist[i]
		weather_Data = getData(weather_URL)
		wea = weather_Data['location']['path']
		wea += "\n温度:" + str(weather_Data['now']['temperature']) 
		wea += "\n风:" + weather_Data['now']['windDirection'] + weather_Data['now']['windScale']
		if len(weather_Data['alarm']) 
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红辣椒炒绿辣椒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值