实验四《Python程序设计》实验报告

 

2021-2022-7 《Python程序设计》实验四报告

课程:《Python程序设计》
班级: 2143
实验教师:王志强
实验日期:2022年5月30日
必修/选修: 公选课

1.实验内容

Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。

注:在华为ECS服务器(OpenOuler系统)和物理机(Windows/Linux系统)上使用VIM、PDB、IDLE、Pycharm等工具编程实现。

评分标准:
(1)程序能运行,功能丰富。(需求提交源代码,并建议录制程序运行的视频)10分

(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。10分。

(3)在实践报告中,需要对全课进行总结,并写课程感想体会、意见和建议等。5分

(4)如果没有使用华为云服务(ECS或者MindSpore均可),本次实践扣10分。

2. 实验过程及结果

(1)实验分析

  实验目的:爬取中国档案资讯网各地在线新闻并进行数据分析后以可视化展示

(2)实验设计

  结构规划:

  为实现目的,大致可将项目分为三大板块:1、信息爬取与储存  2、数据分析与统计图、词云生成  3、GUI界面实现可交互可视化

  1、信息爬取与储存:

  库函数使用:

  request库、bs4库、docx库、re库(提取URL)、os库(创建文件夹及进程可视化)

  思路概述:

  (1)对各地菜单末页链接爬取用正则表达式分析菜单页数

  (2)通过修改URL中表示页码的序号进行翻页

  (3)爬取每页菜单中各新闻详情页对应URL

  (4)爬取新闻详情后通过docx库进行内容储存,用txt格式进行数据储存用于分析

  2、数据分析与统计图、词云生成

  库函数使用:

  matplotlib库、jieba库、palettable库、wordcloud库、os库

  思路概述:

  (1)通过os库统计爬取文章篇数,通过字符串操作获取爬取总字数

  (2)通过jieba库对爬虫模块储存下来的txt文档进行分词操作

  (3)通过对分词后的数据进行遍历统计频率

  (4)通过matplotlib库对频率前十的词语生成热词top10统计图

  (5)通过worldcloud库生成热词词云

  3、GUI界面实现可交互可视化

  库函数使用:

  ctypes库、tkinter库、pathlib库

  思路概述:

  (1)通过figma进行界面设计

  (2)通过Tkinter Designer将figma中设计好的界面生成python工程

  (3)添加按钮对应的command函数以及对图片的初始化达到点击按钮切换显示的效果

  (4)优化细节

(3)实现过程

   1、信息爬取与储存

  (1)import库以及请求头设置
 1 import re
 2 import requests
 3 from bs4 import BeautifulSoup
 4 import os
 5 import csv
 6 import docx
 7 from docx import Document
 8 # 段落样式修改
 9 from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
10 # 颜色修改、字号调整
11 from docx.shared import RGBColor, Pt
12 # 设置中文字体
13 from docx.oxml.ns import qn
14 #设置图片大小
15 from docx.shared import Inches
16 import time
17 #导入自定义的统计图及词云生成模块
18 from data_analysis import *
19 
20 
21 # 为躲避反爬机制,伪装成浏览器的请求头
22 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
  (2)定义对应系统的清屏函数
1 def clear():
2     if os.name == 'posix':  ## win为cls   linux为clear
3         os.system('clear')
4     else:
5         os.system('cls')  
  (3)将以爬取的各地区的URL以字典储存
 1 #所有地区链接
 2 def all_local_url():
 3     name=""" 北京|天津|辽宁|吉林|上海|江苏|浙江|安徽|福建|江西|山东|河南|湖北|湖南|广东|广西|海南|四川|云南|陕西|甘肃|宁夏|新疆|宁波|厦门|青岛|深圳|沈阳|哈尔滨|南京|杭州|济南|武汉|广州"""
 4     url=""" http://www.zgdazxw.com.cn/local/beijing.html
 5     http://www.zgdazxw.com.cn/local/tianjin.html
 6     http://www.zgdazxw.com.cn/local/liaoning.html
 7     http://www.zgdazxw.com.cn/local/jiling.html
 8     http://www.zgdazxw.com.cn/local/shanghai.html
 9     http://www.zgdazxw.com.cn/local/jiangsu.html
10     http://www.zgdazxw.com.cn/local/zhejiang.html
11     http://www.zgdazxw.com.cn/local/anhui.html
12     http://www.zgdazxw.com.cn/local/fujian.html
13     http://www.zgdazxw.com.cn/local/jiangxi.html
14     http://www.zgdazxw.com.cn/local/shandong.html
15     http://www.zgdazxw.com.cn/local/henan.html
16     http://www.zgdazxw.com.cn/local/hubei.html
17     http://www.zgdazxw.com.cn/local/hunan.html
18     http://www.zgdazxw.com.cn/local/guangdong.html
19     http://www.zgdazxw.com.cn/local/guangxi.html
20     http://www.zgdazxw.com.cn/local/hainan.html
21     http://www.zgdazxw.com.cn/local/sichuan.html
22     http://www.zgdazxw.com.cn/local/yunnan.html
23     http://www.zgdazxw.com.cn/local/shanxi2.html
24     http://www.zgdazxw.com.cn/local/gansu.html
25     http://www.zgdazxw.com.cn/local/ningxia.html
26     http://www.zgdazxw.com.cn/local/xinjiang.html
27     http://www.zgdazxw.com.cn/local/node_2760.htm
28     http://www.zgdazxw.com.cn/local/node_2761.htm
29     http://www.zgdazxw.com.cn/local/node_2762.htm
30     http://www.zgdazxw.com.cn/local/node_2763.htm
31     http://www.zgdazxw.com.cn/local/node_2764.htm
32     http://www.zgdazxw.com.cn/local/node_2765.htm
33     http://www.zgdazxw.com.cn/local/node_2766.htm
34     http://www.zgdazxw.com.cn/local/node_2767.htm
35     http://www.zgdazxw.com.cn/local/node_2768.htm
36     http://www.zgdazxw.com.cn/local/node_2769.htm
37     http://www.zgdazxw.com.cn/local/node_2770.htm """
38 
39     name_list=name.split("|")
40     url_list=url.split("\n")
41     for i in range(len(name_list)):
42         name_list[i] = name_list[i].strip()
43     for i in range(len(url_list)):
44         url_list[i] = url_list[i].strip()        
45     dic = dict(zip(name_list, url_list))
46     return dic
  (4)通过提取末页链接获取地区总页数
 1 def page_counter(local_url):
 2     res = requests.get(local_url,headers=headers)
 3     res.encoding='utf-8'
 4     bs = BeautifulSoup(res.text,'html.parser')
 5 
 6     #通过正则处理末页对应链接获得地区总页数
 7     page_num = bs.find_all(class_="num",text="末页")
 8     pattern = "_(\d*?).htm"
 9     num=re.findall(pattern, str(page_num))
10     return int(num[0])
  (5)对每页菜单爬取获得新闻详情页URL
 1 def pagelist_scrap(list_url):
 2     res = requests.get(list_url,headers=headers)
 3     res.encoding='utf-8'
 4     bs = BeautifulSoup(res.text,'html.parser')
 5 
 6     #正则匹配出链接
 7     url_found = bs.find_all('a')
 8     pattern = '''<a href="..(.*?)"'''
 9     re_list=re.findall(pattern, str(url_found))
10 
11     #重组链接存入列表
12     url_list=[]
13     for url in re_list:
14         url_list.append("http://www.zgdazxw.com.cn"+url)
15     return url_list
  (6)爬取详情页内容
 1 def page_scrap(page_url,local):
 2 
 3     ###爬虫部分
 4     # 获取数据
 5     res = requests.get(page_url,headers=headers)
 6     res.encoding='utf-8'
 7 
 8     # 解析数据
 9     bs = BeautifulSoup(res.text,'html.parser')
10 
11     #取出标题
12     h1 = bs.find_all('h1')[0].get_text()    #一级标题
13     h2 = bs.find_all('h2')[0].get_text()    #二级标题
14 
15     if h1+".docx" in os.listdir('各地在线'+'/'+local):
16         return -1
17 
18     #取出信息
19     info_list = bs.find_all('h3')
20     all_info=[]
21     for info in info_list:
22         all_info.append(info.get_text())
23     info = "{}    {}    {}".format(all_info[0],all_info[1],all_info[2])
24 
25     # 取出正文
26     text_list = bs.find_all('h4')
27 
28     #拼接正文
29     whole_text=""
30     for text in text_list:
31         whole_text +=text.get_text()
32 
33     #1、正则取出图片链接  2、拼接完整链接并储存
34     img_list = bs.find_all('img')
35     pattern = '''src="../..(.*?)" title=""/'''
36     img_url_list=[]
37     for img in img_list:
38         img_a = re.findall(pattern, str(img))
39         if img_a:
40             img_url_list.append("http://www.zgdazxw.com.cn/news"+img_a[0])
41 
42     #通过链接下载图片
43     save_path=''
44     for img_url in img_url_list:
45         save_path = '各地在线'+'/'+local+'/图片' +"/"+ h1 + ".jpg"
46         r = requests.get(img_url,headers=headers)
47         with open(save_path ,mode = "wb") as f:
48             f.write(r.content) #图片内容写入文件
49 
50     ###文档储存部分
51     creat(name=h1, link='', time='', text=whole_text, title=h1, subtitle=h2, info=info,img_path=save_path,local=local)
52 
53     ###将正文录入各地txt用作统计和词云生成
54     with open('data/text'+'/'+local+'/'+'data.txt',encoding='utf-8',mode = 'a') as f:
55         f.write(whole_text)
  (7)设置word文档格式,将信息保存为word文档
 1 #定义函数设置文本格式
 2 def setting(paragraph,size,font_name,RGB,alignment="left"):
 3     #设置对齐方式
 4     if alignment == "left":
 5         paragraph.alignment=WD_PARAGRAPH_ALIGNMENT.LEFT
 6     elif alignment == "center":
 7         paragraph.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER
 8     else:
 9         pass
10 
11     for run in paragraph.runs:
12         #设置字号
13         run.font.size = Pt(size)
14         #设置字体
15         run.font.name = font_name
16         r = run._element.rPr.rFonts
17         r.set(qn('w:eastAsia'), font_name) 
18         #设置颜色
19         r=RGB[0]
20         g=RGB[1]
21         b=RGB[2]
22         run.font.color.rgb = RGBColor(r,g,b)
23 
24 #定义函数生成文档
25 def creat(name,link,time,text,title,subtitle,info,img_path,local):
26     doc = Document()
27     head=doc.add_heading(title, 1)
28     
29     #设置大标题格式
30     setting(head,18,"黑体",(0, 73, 134),"center")
31 
32     #判断副标题并设置格式
33     if re.findall('\S', subtitle):
34         sub=doc.add_heading(subtitle,2)
35         setting(sub,13.5,"宋体",(0, 0, 0),"center")
36 
37     info = doc.add_heading(info,3)
38     info.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER
39     p = doc.add_paragraph(text)
40 
41     #设置info格式
42     setting(info,10.5,"宋体",(0, 73, 134),"center")
43     for run in info.runs:
44         run.font.bold=False
45         run.add_break()
46     
47     #设置主体格式
48     setting(p,10.5,"宋体",(0, 0, 0))
49 
50     #在最后添加图片
51     if img_path:
52         doc.add_picture(img_path, width=Inches(4))
53         #居中图片
54         last_paragraph = doc.paragraphs[-1]
55         last_paragraph.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.CENTER
56     
57     #拼接路径并保存
58     save_folder=('各地在线'+'/'+local)
59     save_path=save_folder+'/'+name+".docx"
60     doc.save(save_path)
  (8)编写辅助函数以显示爬取进程
#可视化进程
def visual_process(local,local_num,total_local_num,page,total_page_num,complete_page,total_lists):
    print("[当前地区:{} ({}/{})  当前页面:{} ({}/{})  总进度: {}/{}]".format(local,local_num,total_local_num,page,page,total_page_num,complete_page,total_lists))
  (9)爬取开始前检测并创建所需文件夹
 1 # 创建文件夹并提示
 2 def Create_folder(filename,name):
 3     filename = filename.strip()
 4     filename = filename.rstrip("\\")
 5     isExists = os.path.exists(filename)
 6 
 7     if not isExists:
 8         os.makedirs(filename)
 9         print(filename+"创建成功")
10         return  True
11     else:
12         print(name+" 文件夹已存在")
13         return False
14 
15 #创建储存文件夹
16 def makedirs():
17     for local in all_local_url:
18         Create_folder('各地在线'+'/'+local+'/图片',name=local)  #文档及图片文件夹
19         Create_folder('data/text'+'/'+local,name=local+"_data")      #数据文件夹
20         with open('data/text'+'/'+local+'/'+'data.txt',mode = 'a') as f: #初始化数据文档
21             f.write('')
22             record_data="record_data.txt"
23         with open(record_data,'a',encoding='utf8') as f:        #初始化统计文档
24             f.write('')
25         time.sleep(0.05)
  (10)调用以上函数编写整体爬取的主函数
 1 def main():
 2     #初始化显示
 3     print("程序初始化中",end="")
 4     for i in range(3):
 5         print(".",end="")
 6         time.sleep(0.9)
 7     # 初始化进度数据
 8     total_lists_num=total()
 9     local_num=0
10     complete_page = 0
11 
12     #初始化显示
13     for i in range(7):
14         print(".",end="")
15         time.sleep(0.1)
16     clear()
17     #记录失败次数及对应url
18     count=0
19     failed_url = []
20 
21     #进入地区菜单
22     for local in all_local_url:
23         local_url = all_local_url[local]
24         local_num +=1
25         page = 0
26 
27         #获取地区菜单总页数
28         num = page_counter(local_url)
29 
30         #刷新界面显示
31         clear()
32         visual_process(
33             local=local,
34             local_num=local_num,
35             total_local_num=34,
36             page=page,
37             total_page_num=num,
38             complete_page=complete_page,
39             total_lists=total_lists_num
40             )
41         
42         #用正则拼接每页url并存入列表
43         all_list_url=[local_url]
44         pattern = ".htm"
45         for i in range(2,num+1):
46             url = re.sub(pattern, "_"+str(i)+".htm", local_url, count=1, flags=0)
47             all_list_url.append(url)
48 
49         #对菜单主页爬取,获得当前页所有新闻链接
50         for list_url in all_list_url:
51             page = page+1
52             complete_page = complete_page+1
53 
54             url_list=pagelist_scrap(list_url)
55             # 爬取并储存每页内容
56             for page_url in url_list:
57                 try:
58                     done = page_scrap(page_url,local)
59 
60                 #储存问题url
61                 except:
62                     count = count+1
63                     failed_url.append(page_url)
64                     with open('错误链接.txt','a',encoding="utf_8") as data:
65                         data.write("{}:{}".format(local,page_url))
66                         data.write("\n")
67                     pass
68                 if not(done==-1):   #如果存在docx文件则不等待
69                     time.sleep(0.05)
70                 if complete_page!=0:
71                     print(".",end='')
72             clear()
73             visual_process(local=local,local_num=local_num,total_local_num=34,page=page,total_page_num=num,complete_page=complete_page,total_lists=total_lists_num)
74             time.sleep(0.1)
75         
76         #进行数据分析生成统计图和词云
77         data_path = 'data/text/'+local+'/data.txt'
78         mask_path = 'data/clould_mask/'+local+'.jpg'
79         plot_savepath = 'data/local_plot/'+local+'.png'
80         cloud_savepath = 'data/local_worldclouds/'+local+'.png'
81         analysis(data_path=data_path,mask_path=mask_path,plot_savepath=plot_savepath,cloud_savepath=cloud_savepath,local=local)
82         print(local+"数据分析完毕")
83         time.sleep(1)
  (11)初始化资源并运行主函数
1 if __name__ == "__main__":
2     #读取各地名称-链接
3     all_local_url = all_local_url()
4     #创建对应保存文件夹
5     makedirs()
6     clear()
7     #运行主函数
8     main()

   

  2、数据分析与统计图、词云生成

  注意!!!:若想在本地运行需将(2)中的第80行代码改为本地字体路径

font_path="C:\\Users\\Lenovo\\AppData\\Local\\Microsoft\\Windows\\Fonts\\站酷酷黑.TTF",
  (1)import库
1 import matplotlib.pyplot as plt
2 import jieba
3 import palettable  #导入颜色库
4 from wordcloud import WordCloud, ImageColorGenerator    #导入词云库
5 import numpy as np
6 import os
  (2)将主体打包为一个函数方便调用
 1 def analysis(data_path,mask_path,plot_savepath,cloud_savepath,local):
 2     #读取文本数据
 3     with open(data_path,'r',encoding='utf8') as f:
 4         text = f.read()
 5 
 6     #统计字数
 7     words = text.strip()
 8     num_words = len(words)
 9 
10     #统计篇数
11     path ="各地在线/"+local
12     count = -1  #减去图片文件夹
13     for file in os.listdir(path): #file 表示的是文件名
14             count = count+1
15 
16     #保存统计数据
17     record_data="record_data.txt"
18     with open(record_data,'a',encoding='utf8') as f:
19         f.write("{} {} {}\n".format(local,num_words,count))
20 
21     #设置停用词
22     stop_words_file="stopwords2.txt"
23     with open(stop_words_file,'r',encoding='utf8') as f:
24         stop_words = f.read()
25     
26 
27     #分词
28     words = jieba.cut(text)
29     cut_text = " ".join(words)
30 
31     """ 统计图生成 """
32     #统计词频并保留前10高频词
33     wordcount = {}
34     for word in jieba.cut(text):
35         if len(word) > 1 and word not in stop_words:
36             wordcount[word] = wordcount.get(word, 0)+1
37     rank = sorted(wordcount.items(), key=lambda x: x[1], reverse=True)[:10]
38 
39     x_class_name=[]
40     x_class_value=[]
41     for i in range(len(rank)):
42         x_class_name.append(rank[i][0])
43         x_class_value.append(rank[i][1])
44 
45     #设置中文格式
46     plt.rcParams['font.sans-serif'] = 'Microsoft YaHei' # 微软雅黑
47 
48     #使用palettable进行配色
49     colors=palettable.tableau.BlueRed_6.mpl_colors[0:10]
50 
51     #柱状图bar
52     x = range(10) 
53     y = x_class_value
54     plt.figure(figsize=(20,10), dpi=48)
55     plt.bar( x, y, width=0.4, color=colors ) #这里是bar()函数
56     plt.grid(True, linestyle='--', alpha=0.5)
57     #修改x刻度名字
58     plt.xticks(x, x_class_name,fontsize=20) 
59 
60     # plt.text(a,b,b)数据显示的横坐标、显示的位置高度、显示的数据值的大小
61     for a, b in zip(x, y):
62         plt.text(a, b , b, ha='center', va='bottom',fontsize=20)
63 
64     #设置xy标签
65     plt.xlabel('热词TOP10',fontsize=20)
66     plt.ylabel('出现次数',fontsize=25)
67     plt.title(local+'新闻热词TOP10',fontsize=30)
68 
69     #保存统计图
70     plt.savefig(plot_savepath, bbox_inches='tight')
71     plt.close()
72 
73     """ 词云生成 """
74     # 设置背景图片
75     backgroud_image = plt.imread(mask_path)
76 
77     # 设置词云属性
78     wordcloud = WordCloud(
79         # 设置字体,不然会出现口字乱码,以路径设置
80         font_path="C:\\Users\\Lenovo\\AppData\\Local\\Microsoft\\Windows\\Fonts\\站酷酷黑.TTF",
81         background_color=None,  # 设置了背景(当前为透明)
82         mode='RGBA',
83         mask=backgroud_image,       #设置蒙版
84         colormap='Set3',           #调用matplotlib中的调色盘'Paired'
85         min_font_size=3
86     )
87     # 生成词云
88     wordcloud.generate(cut_text)
89     # 设置词云图片保存路径
90     wordcloud.to_file(cloud_savepath)
  (3)设置测试代码
if __name__ == "__main__":
    local="北京"
    data_path = 'data/text/'+local+'/data.txt'
    data_path ='data/text/北京/data.txt'
    mask_path = 'data/clould_mask/'+local+'.jpg'
    plot_savepath = 'data/local_plot/'+local+'.png'
    cloud_savepath = 'C:data/local_worldclouds/'+local+'.png'
    analysis(data_path=data_path,mask_path=mask_path,plot_savepath=plot_savepath,cloud_savepath=cloud_savepath,local=local)

  

  3、GUI界面实现可交互可视化

  注意!!!:运行前必须在对应文件夹下配置相关的图片资源、且必须至少爬取并分析了第一个地区(北京)的数据

  (1)通过figma进行界面设计

   GUI设计终稿

  (2)通过Tkinter Designer将figma中设计好的界面生成python工程
  (3)导入数据分析后生成的统计图和词云图
1 try:    #try在报错语句前的操作依然会被执行,所以初始化logo放在最前面
2     local = "北京"
3     logo_image_1 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
4     plot_image_1 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
5     bg_image_1 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
6     clouds_image_1 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
7 except: #如果没有数据则将图片对应为暂无数据
8     plot_image_1 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
9     clouds_image_1 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
  (4)设置button组件对应的command效果以及鼠标悬停时的提示
 1 #定义button_1对应的command
 2 def change_1():
 3     global logo,plot,bg,clouds,num_page,num_words
 4     #删除当前显示的图形,防止透明图层堆叠
 5     canvas.delete(logo) 
 6     canvas.delete(plot)
 7     canvas.delete(bg)
 8     canvas.delete(clouds)
 9     canvas.delete(num_page)
10     canvas.delete(num_words)
11     window.update() #刷新界面
12     #重绘画图层
13     plot = canvas.create_image(948.0,398.0,image=plot_image_1)
14     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_1)
15     try:    #没有数据就不要阴影
16         bg = canvas.create_image(268.0,291.0,image=bg_image_1)
17     except:  pass
18     clouds = canvas.create_image(268.0,291.0,image=clouds_image_1)
19 
20     try:    #没有统计数据则显示空格
21         local_page = txt_dict["北京"][1]
22         local_words = txt_dict["北京"][0]
23     except:
24         local_page = "    "
25         local_words = "    "
26     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
27     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
28     
29     all_off()   #关闭所有button_on显示
30     on_1.place(x=61.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
31     
32     print("button_1 on")
33     window.update() #刷新界面
34 
35 #增加鼠标悬浮时的效果
36 button_1.config(cursor="hand2")  
  (4)优化细节:略

 

(4)完整代码展示(完整代码和资源已打包上传至git,点击此处下载,解压后可直接运行GUI模块,爬虫和数据分析模块需将数据分析模块第87行字体设置路径改为本地字体路径)

  一、爬虫模块

  1 import re
  2 import requests
  3 from bs4 import BeautifulSoup
  4 import os
  5 import csv
  6 import docx
  7 from docx import Document
  8 # 段落样式修改
  9 from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
 10 # 颜色修改、字号调整
 11 from docx.shared import RGBColor, Pt
 12 # 设置中文字体
 13 from docx.oxml.ns import qn
 14 #设置图片大小
 15 from docx.shared import Inches
 16 import time
 17 #导入自定义的统计图及词云生成模块
 18 from data_analysis import *
 19 
 20 
 21 # 为躲避反爬机制,伪装成浏览器的请求头
 22 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
 23 
 24 #定义清屏函数
 25 def clear():
 26     if os.name == 'posix':  ## win为cls   linux为clear
 27         os.system('clear')
 28     else:
 29         os.system('cls')  
 30 
 31 # 单页内容爬取
 32 def page_scrap(page_url,local):
 33 
 34     ###爬虫部分
 35     # 获取数据
 36     res = requests.get(page_url,headers=headers)
 37     res.encoding='utf-8'
 38 
 39     # 解析数据
 40     bs = BeautifulSoup(res.text,'html.parser')
 41 
 42     #取出标题
 43     h1 = bs.find_all('h1')[0].get_text()    #一级标题
 44     h2 = bs.find_all('h2')[0].get_text()    #二级标题
 45 
 46     if h1+".docx" in os.listdir('各地在线'+'/'+local):
 47         return -1
 48 
 49     #取出信息
 50     info_list = bs.find_all('h3')
 51     all_info=[]
 52     for info in info_list:
 53         all_info.append(info.get_text())
 54     info = "{}    {}    {}".format(all_info[0],all_info[1],all_info[2])
 55 
 56     # 取出正文
 57     text_list = bs.find_all('h4')
 58 
 59     #拼接正文
 60     whole_text=""
 61     for text in text_list:
 62         whole_text +=text.get_text()
 63 
 64     #1、正则取出图片链接  2、拼接完整链接并储存
 65     img_list = bs.find_all('img')
 66     pattern = '''src="../..(.*?)" title=""/'''
 67     img_url_list=[]
 68     for img in img_list:
 69         img_a = re.findall(pattern, str(img))
 70         if img_a:
 71             img_url_list.append("http://www.zgdazxw.com.cn/news"+img_a[0])
 72 
 73     #通过链接下载图片
 74     save_path=''
 75     for img_url in img_url_list:
 76         save_path = '各地在线'+'/'+local+'/图片' +"/"+ h1 + ".jpg"
 77         r = requests.get(img_url,headers=headers)
 78         with open(save_path ,mode = "wb") as f:
 79             f.write(r.content) #图片内容写入文件
 80 
 81     ###文档储存部分
 82     creat(name=h1, link='', time='', text=whole_text, title=h1, subtitle=h2, info=info,img_path=save_path,local=local)
 83 
 84     ###将正文录入各地txt用作统计和词云生成
 85     with open('data/text'+'/'+local+'/'+'data.txt',encoding='utf-8',mode = 'a') as f:
 86         f.write(whole_text)
 87 
 88 #定义函数设置文本格式
 89 def setting(paragraph,size,font_name,RGB,alignment="left"):
 90     #设置对齐方式
 91     if alignment == "left":
 92         paragraph.alignment=WD_PARAGRAPH_ALIGNMENT.LEFT
 93     elif alignment == "center":
 94         paragraph.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER
 95     else:
 96         pass
 97 
 98     for run in paragraph.runs:
 99         #设置字号
100         run.font.size = Pt(size)
101         #设置字体
102         run.font.name = font_name
103         r = run._element.rPr.rFonts
104         r.set(qn('w:eastAsia'), font_name) 
105         #设置颜色
106         r=RGB[0]
107         g=RGB[1]
108         b=RGB[2]
109         run.font.color.rgb = RGBColor(r,g,b)
110 
111 #定义函数生成文档
112 def creat(name,link,time,text,title,subtitle,info,img_path,local):
113     doc = Document()
114     head=doc.add_heading(title, 1)
115     
116     #设置大标题格式
117     setting(head,18,"黑体",(0, 73, 134),"center")
118 
119     #判断副标题并设置格式
120     if re.findall('\S', subtitle):
121         sub=doc.add_heading(subtitle,2)
122         setting(sub,13.5,"宋体",(0, 0, 0),"center")
123 
124     info = doc.add_heading(info,3)
125     info.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER
126     p = doc.add_paragraph(text)
127 
128     #设置info格式
129     setting(info,10.5,"宋体",(0, 73, 134),"center")
130     for run in info.runs:
131         run.font.bold=False
132         run.add_break()
133     
134     #设置主体格式
135     setting(p,10.5,"宋体",(0, 0, 0))
136 
137     #在最后添加图片
138     if img_path:
139         doc.add_picture(img_path, width=Inches(4))
140         #居中图片
141         last_paragraph = doc.paragraphs[-1]
142         last_paragraph.alignment = docx.enum.text.WD_ALIGN_PARAGRAPH.CENTER
143     
144     #拼接路径并保存
145     save_folder=('各地在线'+'/'+local)
146     save_path=save_folder+'/'+name+".docx"
147     doc.save(save_path)
148 
149 # 地方菜单爬取
150 def pagelist_scrap(list_url):
151     res = requests.get(list_url,headers=headers)
152     res.encoding='utf-8'
153     bs = BeautifulSoup(res.text,'html.parser')
154 
155     #正则匹配出链接
156     url_found = bs.find_all('a')
157     pattern = '''<a href="..(.*?)"'''
158     re_list=re.findall(pattern, str(url_found))
159 
160     #重组链接存入列表
161     url_list=[]
162     for url in re_list:
163         url_list.append("http://www.zgdazxw.com.cn"+url)
164     return url_list
165 
166     # print(url_list)
167 
168 # 爬取当前地区新闻页数
169 def page_counter(local_url):
170     res = requests.get(local_url,headers=headers)
171     res.encoding='utf-8'
172     bs = BeautifulSoup(res.text,'html.parser')
173 
174     #通过正则处理末页对应链接获得地区总页数
175     page_num = bs.find_all(class_="num",text="末页")
176     pattern = "_(\d*?).htm"
177     num=re.findall(pattern, str(page_num))
178     return int(num[0])
179     # print(num)
180 
181 #所有地区链接
182 def all_local_url():
183     name=""" 北京|天津|辽宁|吉林|上海|江苏|浙江|安徽|福建|江西|山东|河南|湖北|湖南|广东|广西|海南|四川|云南|陕西|甘肃|宁夏|新疆|宁波|厦门|青岛|深圳|沈阳|哈尔滨|南京|杭州|济南|武汉|广州"""
184     url=""" http://www.zgdazxw.com.cn/local/beijing.html
185     http://www.zgdazxw.com.cn/local/tianjin.html
186     http://www.zgdazxw.com.cn/local/liaoning.html
187     http://www.zgdazxw.com.cn/local/jiling.html
188     http://www.zgdazxw.com.cn/local/shanghai.html
189     http://www.zgdazxw.com.cn/local/jiangsu.html
190     http://www.zgdazxw.com.cn/local/zhejiang.html
191     http://www.zgdazxw.com.cn/local/anhui.html
192     http://www.zgdazxw.com.cn/local/fujian.html
193     http://www.zgdazxw.com.cn/local/jiangxi.html
194     http://www.zgdazxw.com.cn/local/shandong.html
195     http://www.zgdazxw.com.cn/local/henan.html
196     http://www.zgdazxw.com.cn/local/hubei.html
197     http://www.zgdazxw.com.cn/local/hunan.html
198     http://www.zgdazxw.com.cn/local/guangdong.html
199     http://www.zgdazxw.com.cn/local/guangxi.html
200     http://www.zgdazxw.com.cn/local/hainan.html
201     http://www.zgdazxw.com.cn/local/sichuan.html
202     http://www.zgdazxw.com.cn/local/yunnan.html
203     http://www.zgdazxw.com.cn/local/shanxi2.html
204     http://www.zgdazxw.com.cn/local/gansu.html
205     http://www.zgdazxw.com.cn/local/ningxia.html
206     http://www.zgdazxw.com.cn/local/xinjiang.html
207     http://www.zgdazxw.com.cn/local/node_2760.htm
208     http://www.zgdazxw.com.cn/local/node_2761.htm
209     http://www.zgdazxw.com.cn/local/node_2762.htm
210     http://www.zgdazxw.com.cn/local/node_2763.htm
211     http://www.zgdazxw.com.cn/local/node_2764.htm
212     http://www.zgdazxw.com.cn/local/node_2765.htm
213     http://www.zgdazxw.com.cn/local/node_2766.htm
214     http://www.zgdazxw.com.cn/local/node_2767.htm
215     http://www.zgdazxw.com.cn/local/node_2768.htm
216     http://www.zgdazxw.com.cn/local/node_2769.htm
217     http://www.zgdazxw.com.cn/local/node_2770.htm """
218 
219     name_list=name.split("|")
220     url_list=url.split("\n")
221     for i in range(len(name_list)):
222         name_list[i] = name_list[i].strip()
223     for i in range(len(url_list)):
224         url_list[i] = url_list[i].strip()        
225     dic = dict(zip(name_list, url_list))
226     return dic
227 
228 #计算总页数
229 def total():
230     total_lists=0
231     for local in all_local_url:
232         local_url = all_local_url[local]
233 
234         #获取地区菜单总页数,求和计算要爬取的总页数
235         num = page_counter(local_url)
236         total_lists+=num
237     return total_lists
238 
239 #可视化进程
240 def visual_process(local,local_num,total_local_num,page,total_page_num,complete_page,total_lists):
241     print("[当前地区:{} ({}/{})  当前页面:{} ({}/{})  总进度: {}/{}]".format(local,local_num,total_local_num,page,page,total_page_num,complete_page,total_lists))
242 
243 #主程序
244 def main():
245     #初始化显示
246     print("程序初始化中",end="")
247     for i in range(3):
248         print(".",end="")
249         time.sleep(0.9)
250     # 初始化进度数据
251     total_lists_num=total()
252     local_num=0
253     complete_page = 0
254 
255     #初始化显示
256     for i in range(7):
257         print(".",end="")
258         time.sleep(0.1)
259     clear()
260     #记录失败次数及对应url
261     count=0
262     failed_url = []
263 
264     #进入地区菜单
265     for local in all_local_url:
266         local_url = all_local_url[local]
267         local_num +=1
268         page = 0
269 
270         #获取地区菜单总页数
271         num = page_counter(local_url)
272 
273         #刷新界面显示
274         clear()
275         visual_process(
276             local=local,
277             local_num=local_num,
278             total_local_num=34,
279             page=page,
280             total_page_num=num,
281             complete_page=complete_page,
282             total_lists=total_lists_num
283             )
284         
285         #用正则拼接每页url并存入列表
286         all_list_url=[local_url]
287         pattern = ".htm"
288         for i in range(2,num+1):
289             url = re.sub(pattern, "_"+str(i)+".htm", local_url, count=1, flags=0)
290             all_list_url.append(url)
291 
292         #对菜单主页爬取,获得当前页所有新闻链接
293         for list_url in all_list_url:
294             page = page+1
295             complete_page = complete_page+1
296 
297             url_list=pagelist_scrap(list_url)
298             # 爬取并储存每页内容
299             for page_url in url_list:
300                 try:
301                     done = page_scrap(page_url,local)
302 
303                 #储存问题url
304                 except:
305                     count = count+1
306                     failed_url.append(page_url)
307                     with open('错误链接.txt','a',encoding="utf_8") as data:
308                         data.write("{}:{}".format(local,page_url))
309                         data.write("\n")
310                     pass
311                 if not(done==-1):   #如果存在docx文件则不等待
312                     time.sleep(0.05)
313                 if complete_page!=0:
314                     print(".",end='')
315             clear()
316             visual_process(local=local,local_num=local_num,total_local_num=34,page=page,total_page_num=num,complete_page=complete_page,total_lists=total_lists_num)
317             time.sleep(0.1)
318         
319         #进行数据分析生成统计图和词云
320         data_path = 'data/text/'+local+'/data.txt'
321         mask_path = 'data/clould_mask/'+local+'.jpg'
322         plot_savepath = 'data/local_plot/'+local+'.png'
323         cloud_savepath = 'data/local_worldclouds/'+local+'.png'
324         analysis(data_path=data_path,mask_path=mask_path,plot_savepath=plot_savepath,cloud_savepath=cloud_savepath,local=local)
325         print(local+"数据分析完毕")
326         time.sleep(1)
327         
328 # 创建文件夹并提示
329 def Create_folder(filename,name):
330     filename = filename.strip()
331     filename = filename.rstrip("\\")
332     isExists = os.path.exists(filename)
333 
334     if not isExists:
335         os.makedirs(filename)
336         print(filename+"创建成功")
337         return  True
338     else:
339         print(name+" 文件夹已存在")
340         return False
341 
342 #创建储存文件夹
343 def makedirs():
344     for local in all_local_url:
345         Create_folder('各地在线'+'/'+local+'/图片',name=local)  #文档及图片文件夹
346         Create_folder('data/text'+'/'+local,name=local+"_data")      #数据文件夹
347         with open('data/text'+'/'+local+'/'+'data.txt',mode = 'a') as f: #初始化数据文档
348             f.write('')
349             record_data="record_data.txt"
350         with open(record_data,'a',encoding='utf8') as f:        #初始化统计文档
351             f.write('')
352         time.sleep(0.05)
353 
354 """ 注意!linux中文件夹斜杠为/而不是\ """
355 
356 if __name__ == "__main__":
357     #读取各地名称-链接
358     all_local_url = all_local_url()
359     #创建对应保存文件夹
360     makedirs()
361     clear()
362     #运行主函数
363     main()
View Code

  二、数据分析模块

  1 import matplotlib.pyplot as plt
  2 import jieba
  3 import palettable  #导入颜色库
  4 from wordcloud import WordCloud, ImageColorGenerator    #导入词云库
  5 import numpy as np
  6 import os
  7 
  8 def analysis(data_path,mask_path,plot_savepath,cloud_savepath,local):
  9     #读取文本数据
 10     with open(data_path,'r',encoding='utf8') as f:
 11         text = f.read()
 12 
 13     #统计字数
 14     words = text.strip()
 15     num_words = len(words)
 16 
 17     #统计篇数
 18     path ="各地在线/"+local
 19     count = -1  #减去图片文件夹
 20     for file in os.listdir(path): #file 表示的是文件名
 21             count = count+1
 22 
 23     #保存统计数据
 24     record_data="record_data.txt"
 25     with open(record_data,'a',encoding='utf8') as f:
 26         f.write("{} {} {}\n".format(local,num_words,count))
 27 
 28     #设置停用词
 29     stop_words_file="stopwords2.txt"
 30     with open(stop_words_file,'r',encoding='utf8') as f:
 31         stop_words = f.read()
 32     
 33 
 34     #分词
 35     words = jieba.cut(text)
 36     cut_text = " ".join(words)
 37 
 38     """ 统计图生成 """
 39     #统计词频并保留前10高频词
 40     wordcount = {}
 41     for word in jieba.cut(text):
 42         if len(word) > 1 and word not in stop_words:
 43             wordcount[word] = wordcount.get(word, 0)+1
 44     rank = sorted(wordcount.items(), key=lambda x: x[1], reverse=True)[:10]
 45 
 46     x_class_name=[]
 47     x_class_value=[]
 48     for i in range(len(rank)):
 49         x_class_name.append(rank[i][0])
 50         x_class_value.append(rank[i][1])
 51 
 52     #设置中文格式
 53     plt.rcParams['font.sans-serif'] = 'Microsoft YaHei' # 微软雅黑
 54 
 55     #使用palettable进行配色
 56     colors=palettable.tableau.BlueRed_6.mpl_colors[0:10]
 57 
 58     #柱状图bar
 59     x = range(10) 
 60     y = x_class_value
 61     plt.figure(figsize=(20,10), dpi=48)
 62     plt.bar( x, y, width=0.4, color=colors ) #这里是bar()函数
 63     plt.grid(True, linestyle='--', alpha=0.5)
 64     #修改x刻度名字
 65     plt.xticks(x, x_class_name,fontsize=20) 
 66 
 67     # plt.text(a,b,b)数据显示的横坐标、显示的位置高度、显示的数据值的大小
 68     for a, b in zip(x, y):
 69         plt.text(a, b , b, ha='center', va='bottom',fontsize=20)
 70 
 71     #设置xy标签
 72     plt.xlabel('热词TOP10',fontsize=20)
 73     plt.ylabel('出现次数',fontsize=25)
 74     plt.title(local+'新闻热词TOP10',fontsize=30)
 75 
 76     #保存统计图
 77     plt.savefig(plot_savepath, bbox_inches='tight')
 78     plt.close()
 79 
 80     """ 词云生成 """
 81     # 设置背景图片
 82     backgroud_image = plt.imread(mask_path)
 83 
 84     # 设置词云属性
 85     wordcloud = WordCloud(
 86         # 设置字体,不然会出现口字乱码,以路径设置
 87         font_path="C:\\Users\\Lenovo\\AppData\\Local\\Microsoft\\Windows\\Fonts\\站酷酷黑.TTF",
 88         background_color=None,  # 设置了背景(当前为透明)
 89         mode='RGBA',
 90         mask=backgroud_image,       #设置蒙版
 91         colormap='Set3',           #调用matplotlib中的调色盘'Paired'
 92         min_font_size=3
 93     )
 94     # 生成词云
 95     wordcloud.generate(cut_text)
 96     # 设置词云图片保存路径
 97     wordcloud.to_file(cloud_savepath)
 98 
 99 #测试代码
100 if __name__ == "__main__":
101     local="北京"
102     data_path = 'data/text/'+local+'/data.txt'
103     data_path ='data/text/北京/data.txt'
104     mask_path = 'data/clould_mask/'+local+'.jpg'
105     plot_savepath = 'data/local_plot/'+local+'.png'
106     cloud_savepath = 'C:data/local_worldclouds/'+local+'.png'
107     analysis(data_path=data_path,mask_path=mask_path,plot_savepath=plot_savepath,cloud_savepath=cloud_savepath,local=local)
View Code

  三、GUI界面显示模块

   1 # This file was generated by the Tkinter Designer by Parth Jadhav
   2 # https://github.com/ParthJadhav/Tkinter-Designer
   3 
   4 
   5 from pathlib import Path
   6 
   7 # from tkinter import *
   8 # Explicit imports to satisfy Flake8
   9 from tkinter import Tk, Canvas, Entry, Text, Button, PhotoImage,Label
  10 import ctypes
  11 
  12 
  13 OUTPUT_PATH = Path(__file__).parent
  14 ASSETS_PATH = OUTPUT_PATH / Path("./assets")
  15 
  16 
  17 def relative_to_assets(path: str) -> Path:
  18     return ASSETS_PATH / Path(path)
  19 
  20 #读取统计数据(各地字数和篇数)
  21 record_data="record_data.txt"
  22 with open(record_data,'r',encoding='utf8') as f:
  23     txt_dict={}
  24     for line in f.readlines():
  25         if line!="\n":
  26             line = str(line).replace("\n","") #必须是双引号
  27             txt_dict[line.split(' ')[0]] = line.split(' ')[1:]
  28             #txt_dict["北京"][0] = 751086 (字数)
  29 
  30 window = Tk()
  31 
  32 ##适配高清屏,提高清晰度
  33 #调用api设置成由应用程序缩放
  34 ctypes.windll.shcore.SetProcessDpiAwareness(1)
  35 #调用api获得当前的缩放因子
  36 ScaleFactor=ctypes.windll.shcore.GetScaleFactorForDevice(0)
  37 #设置缩放因子
  38 window.tk.call('tk', 'scaling', ScaleFactor/75)
  39 
  40 
  41 
  42 #加载软件名及图标
  43 app_logo = PhotoImage(file=ASSETS_PATH / "icon.png")
  44 window.call('wm', 'iconphoto', window._w, app_logo)
  45 window.title("中国档案资讯网数据分析")
  46 
  47 window.geometry("1397x786")
  48 window.configure(bg = "#FFFFFF")
  49 
  50 canvas = Canvas(
  51     window,
  52     bg = "#FFFFFF",
  53     height = 786,
  54     width = 1397,
  55     bd = 0,
  56     highlightthickness = 0,
  57     relief = "ridge"
  58 )
  59 
  60 canvas.place(x = 0, y = 0)
  61 image_image_1 = PhotoImage(
  62     file=relative_to_assets("image_1.png"))
  63 image_1 = canvas.create_image(
  64     947.0,
  65     398.0,
  66     image=image_image_1
  67 )
  68 
  69 canvas.create_text(
  70     946.0,
  71     748.0,
  72     anchor="nw",
  73     text="http://www.zgdazxw.com.cn/index.html",
  74     fill="#B2B2B2",
  75     font=("KaiTi", 24 * -1)
  76 )
  77 
  78 canvas.create_text(
  79     1265.0,
  80     719.0,
  81     anchor="nw",
  82     text="数据来源:",
  83     fill="#B2B2B2",
  84     font=("KaiTi", 24 * -1)
  85 )
  86 
  87 image_image_2 = PhotoImage(
  88     file=relative_to_assets("image_2.png"))
  89 image_2 = canvas.create_image(
  90     109.0,
  91     45.0,
  92     image=image_image_2
  93 )
  94 
  95 image_image_3 = PhotoImage(
  96     file=relative_to_assets("image_3.png"))
  97 image_3 = canvas.create_image(
  98     228.0,
  99     45.0,
 100     image=image_image_3
 101 )
 102 
 103 image_image_4 = PhotoImage(
 104     file=relative_to_assets("image_4.png"))
 105 image_4 = canvas.create_image(
 106     268.0,
 107     271.0,
 108     image=image_image_4
 109 )
 110 
 111 image_image_5 = PhotoImage(
 112     file=relative_to_assets("image_5.png"))
 113 image_5 = canvas.create_image(
 114     268.0,
 115     539.0,
 116     image=image_image_5
 117 )
 118 
 119 image_image_6 = PhotoImage(
 120     file=relative_to_assets("image_6.png"))
 121 image_6 = canvas.create_image(
 122     81.0,
 123     494.0,
 124     image=image_image_6
 125 )
 126 
 127 
 128 ##初始化logo,plot,bg,cloulds
 129 #logo,bg,clouds都只能用canvas,Lable会产生图层覆盖问题,plot因为留白足够而且周围环境简单,所以无影响,但统一为canvas
 130 try:    #try在报错语句前的操作依然会被执行,所以初始化logo放在最前面
 131     local = "北京"
 132     logo_image_1 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 133     plot_image_1 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 134     bg_image_1 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 135     clouds_image_1 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 136 except: #如果没有数据则将图片对应为暂无数据
 137     plot_image_1 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 138     clouds_image_1 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 139 
 140 try:
 141     local = "四川"
 142     logo_image_2 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 143     plot_image_2 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 144     bg_image_2 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 145     clouds_image_2 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 146 except:
 147     plot_image_2 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 148     clouds_image_2 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 149 
 150 try:
 151     local = "安徽"
 152     logo_image_3 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 153     plot_image_3 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 154     bg_image_3 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 155     clouds_image_3 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 156 except:
 157     plot_image_3 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 158     clouds_image_3 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 159 
 160 try:
 161     local = "宁波"
 162     logo_image_4 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 163     plot_image_4 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 164     bg_image_4 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 165     clouds_image_4 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 166 except:
 167     plot_image_4 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 168     clouds_image_4 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 169 
 170 try:
 171     local = "上海"
 172     logo_image_5 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 173     plot_image_5 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 174     bg_image_5 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 175     clouds_image_5 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 176 except:
 177     plot_image_5 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 178     clouds_image_5 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 179 
 180 try:
 181     local = "甘肃"
 182     logo_image_6 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 183     plot_image_6 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 184     bg_image_6 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 185     clouds_image_6 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 186 except:
 187     plot_image_6 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 188     clouds_image_6 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 189 
 190 try:
 191     local = "山东"
 192     logo_image_7 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 193     plot_image_7 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 194     bg_image_7 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 195     clouds_image_7 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 196 except:
 197     plot_image_7 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 198     clouds_image_7 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 199 
 200 try:
 201     local = "深圳"
 202     logo_image_8 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 203     plot_image_8 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 204     bg_image_8 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 205     clouds_image_8 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 206 except:
 207     plot_image_8 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 208     clouds_image_8 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 209 
 210 try:
 211     local = "广东"
 212     logo_image_9 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 213     plot_image_9 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 214     bg_image_9 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 215     clouds_image_9 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 216 except:
 217     plot_image_9 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 218     clouds_image_9 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 219 
 220 try:
 221     local = "杭州"
 222     logo_image_10 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 223     plot_image_10 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 224     bg_image_10 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 225     clouds_image_10 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 226 except:
 227     plot_image_10 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 228     clouds_image_10 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 229 
 230 try:
 231     local = "辽宁"
 232     logo_image_11 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 233     plot_image_11 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 234     bg_image_11 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 235     clouds_image_11 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 236 except:
 237     plot_image_11 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 238     clouds_image_11 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 239 
 240 try:
 241     local = "天津"
 242     logo_image_12 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 243     plot_image_12 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 244     bg_image_12 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 245     clouds_image_12 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 246 except:
 247     plot_image_12 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 248     clouds_image_12 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 249 
 250 try:
 251     local = "云南"
 252     logo_image_13 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 253     plot_image_13 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 254     bg_image_13 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 255     clouds_image_13 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 256 except:
 257     plot_image_13 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 258     clouds_image_13 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 259 
 260 try:
 261     local = "福建"
 262     logo_image_14 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 263     plot_image_14 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 264     bg_image_14 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 265     clouds_image_14 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 266 except:
 267     plot_image_14 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 268     clouds_image_14 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 269 
 270 try:
 271     local = "厦门"
 272     logo_image_15 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 273     plot_image_15 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 274     bg_image_15 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 275     clouds_image_15 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 276 except:
 277     plot_image_15 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 278     clouds_image_15 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 279 
 280 try:
 281     local = "江苏"
 282     logo_image_16 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 283     plot_image_16 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 284     bg_image_16 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 285     clouds_image_16 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 286 except:
 287     plot_image_16 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 288     clouds_image_16 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 289 
 290 try:
 291     local = "宁夏"
 292     logo_image_17 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 293     plot_image_17 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 294     bg_image_17 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 295     clouds_image_17 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 296 except:
 297     plot_image_17 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 298     clouds_image_17 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 299 
 300 try:
 301     local = "沈阳"
 302     logo_image_18 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 303     plot_image_18 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 304     bg_image_18 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 305     clouds_image_18 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 306 except:
 307     plot_image_18 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 308     clouds_image_18 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 309 
 310 try:
 311     local = "广西"
 312     logo_image_19 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 313     plot_image_19 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 314     bg_image_19 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 315     clouds_image_19 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 316 except:
 317     plot_image_19 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 318     clouds_image_19 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 319 
 320 try:
 321     local = "济南"
 322     logo_image_20 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 323     plot_image_20 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 324     bg_image_20 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 325     clouds_image_20 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 326 except:
 327     plot_image_20 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 328     clouds_image_20 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 329 
 330 try:
 331     local = "吉林"
 332     logo_image_21 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 333     plot_image_21 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 334     bg_image_21 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 335     clouds_image_21 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 336 except:
 337     plot_image_21 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 338     clouds_image_21 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 339 
 340 try:
 341     local = "陕西"
 342     logo_image_22 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 343     plot_image_22 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 344     bg_image_22 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 345     clouds_image_22 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 346 except:
 347     plot_image_22 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 348     clouds_image_22 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 349 
 350 try:
 351     local = "江西"
 352     logo_image_23 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 353     plot_image_23 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 354     bg_image_23 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 355     clouds_image_23 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 356 except:
 357     plot_image_23 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 358     clouds_image_23 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 359 
 360 try:
 361     local = "青岛"
 362     logo_image_24 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 363     plot_image_24 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 364     bg_image_24 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 365     clouds_image_24 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 366 except:
 367     plot_image_24 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 368     clouds_image_24 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 369 
 370 try:
 371     local = "济南"
 372     logo_image_25 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 373     plot_image_25 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 374     bg_image_25 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 375     clouds_image_25 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 376 except:
 377     plot_image_25 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 378     clouds_image_25 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 379 
 380 try:
 381     local = "南京"
 382     logo_image_26 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 383     plot_image_26 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 384     bg_image_26 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 385     clouds_image_26 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 386 except:
 387     plot_image_26 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 388     clouds_image_26 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 389 
 390 try:
 391     local = "浙江"
 392     logo_image_27 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 393     plot_image_27 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 394     bg_image_27 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 395     clouds_image_27 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 396 except:
 397     plot_image_27 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 398     clouds_image_27 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 399 
 400 try:
 401     local = "新疆"
 402     logo_image_28 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 403     plot_image_28 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 404     bg_image_28 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 405     clouds_image_28 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 406 except:
 407     plot_image_28 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 408     clouds_image_28 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 409 
 410 try:
 411     local = "湖北"
 412     logo_image_29 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 413     plot_image_29 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 414     bg_image_29 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 415     clouds_image_29 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 416 except:
 417     plot_image_29 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 418     clouds_image_29 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 419 
 420 try:
 421     local = "哈尔滨"
 422     logo_image_30 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 423     plot_image_30 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 424     bg_image_30 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 425     clouds_image_30 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 426 except:
 427     plot_image_30 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 428     clouds_image_30 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 429 
 430 try:
 431     local = "河南"
 432     logo_image_31 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 433     plot_image_31 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 434     bg_image_31 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 435     clouds_image_31 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 436 except:
 437     plot_image_31 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 438     clouds_image_31 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 439 
 440 try:
 441     local = "海南"
 442     logo_image_32 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 443     plot_image_32 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 444     bg_image_32 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 445     clouds_image_32 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 446 except:
 447     plot_image_32 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 448     clouds_image_32 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 449 
 450 try:
 451     local = "武汉"
 452     logo_image_33 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 453     plot_image_33 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 454     bg_image_33 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 455     clouds_image_33 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 456 except:
 457     plot_image_33 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 458     clouds_image_33 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 459 
 460 try:
 461     local = "广州"
 462     logo_image_34 = PhotoImage(file=relative_to_assets("../data/local_logo/"+local+"_logo.png"))
 463     plot_image_34 = PhotoImage(file=relative_to_assets("../data/local_plot/"+local+".png"))
 464     bg_image_34 = PhotoImage(file=relative_to_assets("../data/clould_bg/"+local+"_bg.png"))
 465     clouds_image_34 = PhotoImage(file=relative_to_assets("../data/local_worldclouds/"+local+".png"))
 466 except:
 467     plot_image_34 = PhotoImage(file=relative_to_assets("plotdata_not_exit.png"))
 468     clouds_image_34 = PhotoImage(file=relative_to_assets("cloulddata_not_exist.png"))
 469 
 470 #创建文本
 471 canvas.create_text(
 472     104.0,
 473     466.0,
 474     anchor="nw",
 475     text="爬取新闻:",
 476     fill="#7F7F7F",
 477     font=("MicrosoftHimalaya", 19 * -1)
 478 )
 479 
 480 canvas.create_text(
 481     104.0,
 482     509.0,
 483     anchor="nw",
 484     text="总字数:",
 485     fill="#7F7F7F",
 486     font=("MicrosoftHimalaya", 19 * -1)
 487 )
 488 
 489 ##初始化显示为北京
 490 #统计图初始化
 491 plot = canvas.create_image(948.0,398.0,image=plot_image_1)
 492 #地区logo初始化
 493 logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_1)
 494 #词云阴影初始化
 495 bg = canvas.create_image(268.0,291.0,image=bg_image_1)
 496 #词云初始化
 497 clouds = canvas.create_image(268.0,291.0,image=clouds_image_1)
 498 #统计数据初始化
 499 try:
 500     default_page = txt_dict["北京"][1]
 501     default_words = txt_dict["北京"][0]
 502 except:
 503     default_page = "    "
 504     default_words = "    "
 505 num_page = canvas.create_text(220.0,465.0,anchor="nw",text=default_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 506 num_words = canvas.create_text(210.0,506.0,anchor="nw",text=default_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 507 
 508 ##创建按钮,以button_1为模板,后相似
 509 #定义button_1对应的command
 510 def change_1():
 511     global logo,plot,bg,clouds,num_page,num_words
 512     #删除当前显示的图形,防止透明图层堆叠
 513     canvas.delete(logo) 
 514     canvas.delete(plot)
 515     canvas.delete(bg)
 516     canvas.delete(clouds)
 517     canvas.delete(num_page)
 518     canvas.delete(num_words)
 519     window.update() #刷新界面
 520     #重绘画图层
 521     plot = canvas.create_image(948.0,398.0,image=plot_image_1)
 522     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_1)
 523     try:    #没有数据就不要阴影
 524         bg = canvas.create_image(268.0,291.0,image=bg_image_1)
 525     except:  pass
 526     clouds = canvas.create_image(268.0,291.0,image=clouds_image_1)
 527 
 528     try:    #没有统计数据则显示空格
 529         local_page = txt_dict["北京"][1]
 530         local_words = txt_dict["北京"][0]
 531     except:
 532         local_page = "    "
 533         local_words = "    "
 534     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 535     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 536     
 537     all_off()   #关闭所有button_on显示
 538     on_1.place(x=61.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
 539     
 540     print("button_1 on")
 541     window.update() #刷新界面
 542 
 543 button_image_1 = PhotoImage(
 544     file=relative_to_assets("button_1_off.png"))
 545 button_1 = Button(
 546     image=button_image_1,
 547     borderwidth=0,
 548     highlightthickness=0,
 549     command=change_1,
 550     relief="flat"
 551 )
 552 #增加鼠标悬浮时的效果
 553 button_1.config(cursor="hand2")
 554 
 555 button_1.place(
 556     x=61.0,
 557     y=708.0,
 558     width=35.0,
 559     height=20.0
 560 )
 561 
 562 def change_2():
 563     global logo,plot,bg,clouds,num_page,num_words
 564     #删除当前显示的图形,防止透明图层堆叠
 565     canvas.delete(logo) 
 566     canvas.delete(plot)
 567     canvas.delete(bg)
 568     canvas.delete(clouds)
 569     canvas.delete(num_page)
 570     canvas.delete(num_words)
 571     window.update() #刷新界面
 572     #重绘画图层
 573     plot = canvas.create_image(948.0,398.0,image=plot_image_2)
 574     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_2)
 575     try:    #没有数据就不要阴影
 576         bg = canvas.create_image(268.0,291.0,image=bg_image_2)
 577     except:  pass
 578     clouds = canvas.create_image(268.0,291.0,image=clouds_image_2)
 579 
 580     try:    #没有统计数据则显示空格
 581         local_page = txt_dict["四川"][1]
 582         local_words = txt_dict["四川"][0]
 583     except:
 584         local_page = "    "
 585         local_words = "    "
 586     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 587     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 588     
 589     all_off()   #关闭所有button_on显示
 590     on_2.place(x=61.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
 591     
 592     print("button_2 on")
 593     window.update() #刷新界面
 594 
 595 button_image_2 = PhotoImage(
 596     file=relative_to_assets("button_2_off.png"))
 597 button_2 = Button(
 598     image=button_image_2,
 599     borderwidth=0,
 600     highlightthickness=0,
 601     command=change_2,
 602     relief="flat"
 603 )
 604 #增加鼠标悬浮时的效果
 605 button_2.config(cursor="hand2")
 606 
 607 button_2.place(
 608     x=61.0,
 609     y=738.0,
 610     width=35.0,
 611     height=20.0
 612 )
 613 
 614 def change_3():
 615     global logo,plot,bg,clouds,num_page,num_words
 616     #删除当前显示的图形,防止透明图层堆叠
 617     canvas.delete(logo) 
 618     canvas.delete(plot)
 619     canvas.delete(bg)
 620     canvas.delete(clouds)
 621     canvas.delete(num_page)
 622     canvas.delete(num_words)
 623     window.update() #刷新界面
 624     #重绘画图层
 625     plot = canvas.create_image(948.0,398.0,image=plot_image_3)
 626     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_3)
 627     try:    #没有数据就不要阴影
 628         bg = canvas.create_image(268.0,291.0,image=bg_image_3)
 629     except:  pass
 630     clouds = canvas.create_image(268.0,291.0,image=clouds_image_3)
 631 
 632     try:    #没有统计数据则显示空格
 633         local_page = txt_dict["安徽"][1]
 634         local_words = txt_dict["安徽"][0]
 635     except:
 636         local_page = "    "
 637         local_words = "    "
 638     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 639     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 640     
 641     all_off()   #关闭所有button_on显示
 642     on_3.place(x=376.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
 643     
 644     print("button_3 on")
 645     window.update() #刷新界面
 646 
 647 button_image_3 = PhotoImage(
 648     file=relative_to_assets("button_3_off.png"))
 649 button_3 = Button(
 650     image=button_image_3,
 651     borderwidth=0,
 652     highlightthickness=0,
 653     command=change_3,
 654     relief="flat"
 655 )
 656 button_3.config(cursor="hand2") #增加鼠标悬浮时的效果
 657 button_3.place(
 658     x=376.0,
 659     y=708.0,
 660     width=35.0,
 661     height=20.0
 662 )
 663 
 664 def change_4():
 665     global logo,plot,bg,clouds,num_page,num_words
 666     #删除当前显示的图形,防止透明图层堆叠
 667     canvas.delete(logo) 
 668     canvas.delete(plot)
 669     canvas.delete(bg)
 670     canvas.delete(clouds)
 671     canvas.delete(num_page)
 672     canvas.delete(num_words)
 673     window.update() #刷新界面
 674     #重绘画图层
 675     plot = canvas.create_image(948.0,398.0,image=plot_image_4)
 676     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_4)
 677     try:    #没有数据就不要阴影
 678         bg = canvas.create_image(268.0,291.0,image=bg_image_4)
 679     except:  pass
 680     clouds = canvas.create_image(268.0,291.0,image=clouds_image_4)
 681 
 682     try:    #没有统计数据则显示空格
 683         local_page = txt_dict["宁波"][1]
 684         local_words = txt_dict["宁波"][0]
 685     except:
 686         local_page = "    "
 687         local_words = "    "
 688     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 689     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 690     
 691     all_off()   #关闭所有button_on显示
 692     on_4.place(x=331.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
 693     
 694     print("button_4 on")
 695     window.update() #刷新界面
 696 
 697 button_image_4 = PhotoImage(
 698     file=relative_to_assets("button_4_off.png"))
 699 button_4 = Button(
 700     image=button_image_4,
 701     borderwidth=0,
 702     highlightthickness=0,
 703     command=change_4,
 704     relief="flat"
 705 )
 706 button_4.config(cursor="hand2") #增加鼠标悬浮时的效果
 707 button_4.place(
 708     x=331.0,
 709     y=738.0,
 710     width=35.0,
 711     height=20.0
 712 )
 713 
 714 def change_5():
 715     global logo,plot,bg,clouds,num_page,num_words
 716     #删除当前显示的图形,防止透明图层堆叠
 717     canvas.delete(logo) 
 718     canvas.delete(plot)
 719     canvas.delete(bg)
 720     canvas.delete(clouds)
 721     canvas.delete(num_page)
 722     canvas.delete(num_words)
 723     window.update() #刷新界面
 724     #重绘画图层
 725     plot = canvas.create_image(948.0,398.0,image=plot_image_5)
 726     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_5)
 727     try:    #没有数据就不要阴影
 728         bg = canvas.create_image(268.0,291.0,image=bg_image_5)
 729     except:  pass
 730     clouds = canvas.create_image(268.0,291.0,image=clouds_image_5)
 731 
 732     try:    #没有统计数据则显示空格
 733         local_page = txt_dict["上海"][1]
 734         local_words = txt_dict["上海"][0]
 735     except:
 736         local_page = "    "
 737         local_words = "    "
 738     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 739     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 740     
 741     all_off()   #关闭所有button_on显示
 742     on_5.place(x=241.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
 743     
 744     print("button_5 on")
 745     window.update() #刷新界面
 746 
 747 button_image_5 = PhotoImage(
 748     file=relative_to_assets("button_5_off.png"))
 749 button_5 = Button(
 750     image=button_image_5,
 751     borderwidth=0,
 752     highlightthickness=0,
 753     command=change_5,
 754     relief="flat"
 755 )
 756 button_5.config(cursor="hand2") #增加鼠标悬浮时的效果
 757 button_5.place(
 758     x=241.0,
 759     y=708.0,
 760     width=35.0,
 761     height=20.0
 762 )
 763 
 764 def change_6():
 765     global logo,plot,bg,clouds,num_page,num_words
 766     #删除当前显示的图形,防止透明图层堆叠
 767     canvas.delete(logo) 
 768     canvas.delete(plot)
 769     canvas.delete(bg)
 770     canvas.delete(clouds)
 771     canvas.delete(num_page)
 772     canvas.delete(num_words)
 773     window.update() #刷新界面
 774     #重绘画图层
 775     plot = canvas.create_image(948.0,398.0,image=plot_image_6)
 776     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_6)
 777     try:    #没有数据就不要阴影
 778         bg = canvas.create_image(268.0,291.0,image=bg_image_6)
 779     except:  pass
 780     clouds = canvas.create_image(268.0,291.0,image=clouds_image_6)
 781 
 782     try:    #没有统计数据则显示空格
 783         local_page = txt_dict["甘肃"][1]
 784         local_words = txt_dict["甘肃"][0]
 785     except:
 786         local_page = "    "
 787         local_words = "    "
 788     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 789     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 790     
 791     all_off()   #关闭所有button_on显示
 792     on_6.place(x=196.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
 793     
 794     print("button_6 on")
 795     window.update() #刷新界面
 796 
 797 button_image_6 = PhotoImage(
 798     file=relative_to_assets("button_6_off.png"))
 799 button_6 = Button(
 800     image=button_image_6,
 801     borderwidth=0,
 802     highlightthickness=0,
 803     command=change_6,
 804     relief="flat"
 805 )
 806 button_6.config(cursor="hand2") #增加鼠标悬浮时的效果
 807 button_6.place(
 808     x=196.0,
 809     y=738.0,
 810     width=35.0,
 811     height=20.0
 812 )
 813 
 814 def change_7():
 815     global logo,plot,bg,clouds,num_page,num_words
 816     #删除当前显示的图形,防止透明图层堆叠
 817     canvas.delete(logo) 
 818     canvas.delete(plot)
 819     canvas.delete(bg)
 820     canvas.delete(clouds)
 821     canvas.delete(num_page)
 822     canvas.delete(num_words)
 823     window.update() #刷新界面
 824     #重绘画图层
 825     plot = canvas.create_image(948.0,398.0,image=plot_image_7)
 826     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_7)
 827     try:    #没有数据就不要阴影
 828         bg = canvas.create_image(268.0,291.0,image=bg_image_7)
 829     except:  pass
 830     clouds = canvas.create_image(268.0,291.0,image=clouds_image_7)
 831 
 832     try:    #没有统计数据则显示空格
 833         local_page = txt_dict["山东"][1]
 834         local_words = txt_dict["山东"][0]
 835     except:
 836         local_page = "    "
 837         local_words = "    "
 838     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 839     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 840     
 841     all_off()   #关闭所有button_on显示
 842     on_7.place(x=511.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
 843     
 844     print("button_7 on")
 845     window.update() #刷新界面
 846 
 847 button_image_7 = PhotoImage(
 848     file=relative_to_assets("button_7_off.png"))
 849 button_7 = Button(
 850     image=button_image_7,
 851     borderwidth=0,
 852     highlightthickness=0,
 853     command=change_7,
 854     relief="flat"
 855 )
 856 button_7.config(cursor="hand2") #增加鼠标悬浮时的效果
 857 button_7.place(
 858     x=511.0,
 859     y=708.0,
 860     width=35.0,
 861     height=20.0
 862 )
 863 
 864 def change_8():
 865     global logo,plot,bg,clouds,num_page,num_words
 866     #删除当前显示的图形,防止透明图层堆叠
 867     canvas.delete(logo) 
 868     canvas.delete(plot)
 869     canvas.delete(bg)
 870     canvas.delete(clouds)
 871     canvas.delete(num_page)
 872     canvas.delete(num_words)
 873     window.update() #刷新界面
 874     #重绘画图层
 875     plot = canvas.create_image(948.0,398.0,image=plot_image_8)
 876     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_8)
 877     try:    #没有数据就不要阴影
 878         bg = canvas.create_image(268.0,291.0,image=bg_image_8)
 879     except:  pass
 880     clouds = canvas.create_image(268.0,291.0,image=clouds_image_8)
 881 
 882     try:    #没有统计数据则显示空格
 883         local_page = txt_dict["深圳"][1]
 884         local_words = txt_dict["深圳"][0]
 885     except:
 886         local_page = "    "
 887         local_words = "    "
 888     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 889     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 890     
 891     all_off()   #关闭所有button_on显示
 892     on_8.place(x=466.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
 893     
 894     print("button_8 on")
 895     window.update() #刷新界面
 896 
 897 
 898 button_image_8 = PhotoImage(
 899     file=relative_to_assets("button_8_off.png"))
 900 button_8 = Button(
 901     image=button_image_8,
 902     borderwidth=0,
 903     highlightthickness=0,
 904     command=change_8,
 905     relief="flat"
 906 )
 907 button_8.config(cursor="hand2") #增加鼠标悬浮时的效果
 908 button_8.place(
 909     x=466.0,
 910     y=738.0,
 911     width=35.0,
 912     height=20.0
 913 )
 914 
 915 def change_9():
 916     global logo,plot,bg,clouds,num_page,num_words
 917     #删除当前显示的图形,防止透明图层堆叠
 918     canvas.delete(logo) 
 919     canvas.delete(plot)
 920     canvas.delete(bg)
 921     canvas.delete(clouds)
 922     canvas.delete(num_page)
 923     canvas.delete(num_words)
 924     window.update() #刷新界面
 925     #重绘画图层
 926     plot = canvas.create_image(948.0,398.0,image=plot_image_9)
 927     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_9)
 928     try:    #没有数据就不要阴影
 929         bg = canvas.create_image(268.0,291.0,image=bg_image_9)
 930     except:  pass
 931     clouds = canvas.create_image(268.0,291.0,image=clouds_image_9)
 932 
 933     try:    #没有统计数据则显示空格
 934         local_page = txt_dict["广东"][1]
 935         local_words = txt_dict["广东"][0]
 936     except:
 937         local_page = "    "
 938         local_words = "    "
 939     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 940     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 941     
 942     all_off()   #关闭所有button_on显示
 943     on_9.place(x=701.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
 944     
 945     print("button_9 on")
 946     window.update() #刷新界面
 947 
 948 button_image_9 = PhotoImage(
 949     file=relative_to_assets("button_9_off.png"))
 950 button_9 = Button(
 951     image=button_image_9,
 952     borderwidth=0,
 953     highlightthickness=0,
 954     command=change_9,
 955     relief="flat"
 956 )
 957 button_9.config(cursor="hand2") #增加鼠标悬浮时的效果
 958 button_9.place(
 959     x=701.0,
 960     y=708.0,
 961     width=35.0,
 962     height=20.0
 963 )
 964 
 965 def change_10():
 966     global logo,plot,bg,clouds,num_page,num_words
 967     #删除当前显示的图形,防止透明图层堆叠
 968     canvas.delete(logo) 
 969     canvas.delete(plot)
 970     canvas.delete(bg)
 971     canvas.delete(clouds)
 972     canvas.delete(num_page)
 973     canvas.delete(num_words)
 974     window.update() #刷新界面
 975     #重绘画图层
 976     plot = canvas.create_image(948.0,398.0,image=plot_image_10)
 977     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_10)
 978     try:    #没有数据就不要阴影
 979         bg = canvas.create_image(268.0,291.0,image=bg_image_10)
 980     except:  pass
 981     clouds = canvas.create_image(268.0,291.0,image=clouds_image_10)
 982 
 983     try:    #没有统计数据则显示空格
 984         local_page = txt_dict["杭州"][1]
 985         local_words = txt_dict["杭州"][0]
 986     except:
 987         local_page = "    "
 988         local_words = "    "
 989     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 990     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
 991     
 992     all_off()   #关闭所有button_on显示
 993     on_10.place(x=656.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
 994     
 995     print("button_10 on")
 996     window.update() #刷新界面
 997 
 998 button_image_10 = PhotoImage(
 999     file=relative_to_assets("button_10_off.png"))
1000 button_10 = Button(
1001     image=button_image_10,
1002     borderwidth=0,
1003     highlightthickness=0,
1004     command=change_10,
1005     relief="flat"
1006 )
1007 button_10.config(cursor="hand2") #增加鼠标悬浮时的效果
1008 button_10.place(
1009     x=656.0,
1010     y=738.0,
1011     width=35.0,
1012     height=20.0
1013 )
1014 
1015 def change_11():
1016     global logo,plot,bg,clouds,num_page,num_words
1017     #删除当前显示的图形,防止透明图层堆叠
1018     canvas.delete(logo) 
1019     canvas.delete(plot)
1020     canvas.delete(bg)
1021     canvas.delete(clouds)
1022     canvas.delete(num_page)
1023     canvas.delete(num_words)
1024     window.update() #刷新界面
1025     #重绘画图层
1026     plot = canvas.create_image(948.0,398.0,image=plot_image_11)
1027     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_11)
1028     try:    #没有数据就不要阴影
1029         bg = canvas.create_image(268.0,291.0,image=bg_image_11)
1030     except:  pass
1031     clouds = canvas.create_image(268.0,291.0,image=clouds_image_11)
1032 
1033     try:    #没有统计数据则显示空格
1034         local_page = txt_dict["辽宁"][1]
1035         local_words = txt_dict["辽宁"][0]
1036     except:
1037         local_page = "    "
1038         local_words = "    "
1039     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1040     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1041     
1042     all_off()   #关闭所有button_on显示
1043     on_11.place(x=151.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1044     
1045     print("button_11 on")
1046     window.update() #刷新界面
1047 
1048 button_image_11 = PhotoImage(
1049     file=relative_to_assets("button_11_off.png"))
1050 button_11 = Button(
1051     image=button_image_11,
1052     borderwidth=0,
1053     highlightthickness=0,
1054     command=change_11,
1055     relief="flat"
1056 )
1057 button_11.config(cursor="hand2") #增加鼠标悬浮时的效果
1058 button_11.place(
1059     x=151.0,
1060     y=708.0,
1061     width=35.0,
1062     height=20.0
1063 )
1064 
1065 def change_12():
1066     global logo,plot,bg,clouds,num_page,num_words
1067     #删除当前显示的图形,防止透明图层堆叠
1068     canvas.delete(logo) 
1069     canvas.delete(plot)
1070     canvas.delete(bg)
1071     canvas.delete(clouds)
1072     canvas.delete(num_page)
1073     canvas.delete(num_words)
1074     window.update() #刷新界面
1075     #重绘画图层
1076     plot = canvas.create_image(948.0,398.0,image=plot_image_12)
1077     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_12)
1078     try:    #没有数据就不要阴影
1079         bg = canvas.create_image(268.0,291.0,image=bg_image_12)
1080     except:  pass
1081     clouds = canvas.create_image(268.0,291.0,image=clouds_image_12)
1082 
1083     try:    #没有统计数据则显示空格
1084         local_page = txt_dict["天津"][1]
1085         local_words = txt_dict["天津"][0]
1086     except:
1087         local_page = "    "
1088         local_words = "    "
1089     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1090     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1091     
1092     all_off()   #关闭所有button_on显示
1093     on_12.place(x=106.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1094     
1095     print("button_12 on")
1096     window.update() #刷新界面
1097 
1098 button_image_12 = PhotoImage(
1099     file=relative_to_assets("button_12_off.png"))
1100 button_12 = Button(
1101     image=button_image_12,
1102     borderwidth=0,
1103     highlightthickness=0,
1104     command=change_12,
1105     relief="flat"
1106 )
1107 button_12.config(cursor="hand2") #增加鼠标悬浮时的效果
1108 button_12.place(
1109     x=106.0,
1110     y=708.0,
1111     width=35.0,
1112     height=20.0
1113 )
1114 
1115 def change_13():
1116     global logo,plot,bg,clouds,num_page,num_words
1117     #删除当前显示的图形,防止透明图层堆叠
1118     canvas.delete(logo) 
1119     canvas.delete(plot)
1120     canvas.delete(bg)
1121     canvas.delete(clouds)
1122     canvas.delete(num_page)
1123     canvas.delete(num_words)
1124     window.update() #刷新界面
1125     #重绘画图层
1126     plot = canvas.create_image(948.0,398.0,image=plot_image_13)
1127     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_13)
1128     try:    #没有数据就不要阴影
1129         bg = canvas.create_image(268.0,291.0,image=bg_image_13)
1130     except:  pass
1131     clouds = canvas.create_image(268.0,291.0,image=clouds_image_13)
1132 
1133     try:    #没有统计数据则显示空格
1134         local_page = txt_dict["云南"][1]
1135         local_words = txt_dict["云南"][0]
1136     except:
1137         local_page = "    "
1138         local_words = "    "
1139     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1140     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1141     
1142     all_off()   #关闭所有button_on显示
1143     on_13.place(x=106.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1144     
1145     print("button_13 on")
1146     window.update() #刷新界面
1147 
1148 button_image_13 = PhotoImage(
1149     file=relative_to_assets("button_13_off.png"))
1150 button_13 = Button(
1151     image=button_image_13,
1152     borderwidth=0,
1153     highlightthickness=0,
1154     command=change_13,
1155     relief="flat"
1156 )
1157 button_13.config(cursor="hand2") #增加鼠标悬浮时的效果
1158 button_13.place(
1159     x=106.0,
1160     y=738.0,
1161     width=35.0,
1162     height=20.0
1163 )
1164 
1165 def change_14():
1166     global logo,plot,bg,clouds,num_page,num_words
1167     #删除当前显示的图形,防止透明图层堆叠
1168     canvas.delete(logo) 
1169     canvas.delete(plot)
1170     canvas.delete(bg)
1171     canvas.delete(clouds)
1172     canvas.delete(num_page)
1173     canvas.delete(num_words)
1174     window.update() #刷新界面
1175     #重绘画图层
1176     plot = canvas.create_image(948.0,398.0,image=plot_image_14)
1177     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_14)
1178     try:    #没有数据就不要阴影
1179         bg = canvas.create_image(268.0,291.0,image=bg_image_14)
1180     except:  pass
1181     clouds = canvas.create_image(268.0,291.0,image=clouds_image_14)
1182 
1183     try:    #没有统计数据则显示空格
1184         local_page = txt_dict["福建"][1]
1185         local_words = txt_dict["福建"][0]
1186     except:
1187         local_page = "    "
1188         local_words = "    "
1189     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1190     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1191     
1192     all_off()   #关闭所有button_on显示
1193     on_14.place(x=421.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1194     
1195     print("button_14 on")
1196     window.update() #刷新界面
1197 
1198 button_image_14 = PhotoImage(
1199     file=relative_to_assets("button_14_off.png"))
1200 button_14 = Button(
1201     image=button_image_14,
1202     borderwidth=0,
1203     highlightthickness=0,
1204     command=change_14,
1205     relief="flat"
1206 )
1207 button_14.config(cursor="hand2") #增加鼠标悬浮时的效果
1208 button_14.place(
1209     x=421.0,
1210     y=708.0,
1211     width=35.0,
1212     height=20.0
1213 )
1214 
1215 def change_15():
1216     global logo,plot,bg,clouds,num_page,num_words
1217     #删除当前显示的图形,防止透明图层堆叠
1218     canvas.delete(logo) 
1219     canvas.delete(plot)
1220     canvas.delete(bg)
1221     canvas.delete(clouds)
1222     canvas.delete(num_page)
1223     canvas.delete(num_words)
1224     window.update() #刷新界面
1225     #重绘画图层
1226     plot = canvas.create_image(948.0,398.0,image=plot_image_15)
1227     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_15)
1228     try:    #没有数据就不要阴影
1229         bg = canvas.create_image(268.0,291.0,image=bg_image_15)
1230     except:  pass
1231     clouds = canvas.create_image(268.0,291.0,image=clouds_image_15)
1232 
1233     try:    #没有统计数据则显示空格
1234         local_page = txt_dict["厦门"][1]
1235         local_words = txt_dict["厦门"][0]
1236     except:
1237         local_page = "    "
1238         local_words = "    "
1239     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1240     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1241     
1242     all_off()   #关闭所有button_on显示
1243     on_15.place(x=376.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1244     
1245     print("button_15 on")
1246     window.update() #刷新界面
1247 
1248 button_image_15 = PhotoImage(
1249     file=relative_to_assets("button_15_off.png"))
1250 button_15 = Button(
1251     image=button_image_15,
1252     borderwidth=0,
1253     highlightthickness=0,
1254     command=change_15,
1255     relief="flat"
1256 )
1257 button_15.config(cursor="hand2") #增加鼠标悬浮时的效果
1258 button_15.place(
1259     x=376.0,
1260     y=738.0,
1261     width=35.0,
1262     height=20.0
1263 )
1264 
1265 def change_16():
1266     global logo,plot,bg,clouds,num_page,num_words
1267     #删除当前显示的图形,防止透明图层堆叠
1268     canvas.delete(logo) 
1269     canvas.delete(plot)
1270     canvas.delete(bg)
1271     canvas.delete(clouds)
1272     canvas.delete(num_page)
1273     canvas.delete(num_words)
1274     window.update() #刷新界面
1275     #重绘画图层
1276     plot = canvas.create_image(948.0,398.0,image=plot_image_16)
1277     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_16)
1278     try:    #没有数据就不要阴影
1279         bg = canvas.create_image(268.0,291.0,image=bg_image_16)
1280     except:  pass
1281     clouds = canvas.create_image(268.0,291.0,image=clouds_image_16)
1282 
1283     try:    #没有统计数据则显示空格
1284         local_page = txt_dict["江苏"][1]
1285         local_words = txt_dict["江苏"][0]
1286     except:
1287         local_page = "    "
1288         local_words = "    "
1289     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1290     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1291     
1292     all_off()   #关闭所有button_on显示
1293     on_16.place(x=286.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1294     
1295     print("button_16 on")
1296     window.update() #刷新界面
1297 
1298 button_image_16 = PhotoImage(
1299     file=relative_to_assets("button_16_off.png"))
1300 button_16 = Button(
1301     image=button_image_16,
1302     borderwidth=0,
1303     highlightthickness=0,
1304     command=change_16,
1305     relief="flat"
1306 )
1307 button_16.config(cursor="hand2") #增加鼠标悬浮时的效果
1308 button_16.place(
1309     x=286.0,
1310     y=708.0,
1311     width=35.0,
1312     height=20.0
1313 )
1314 
1315 def change_17():
1316     global logo,plot,bg,clouds,num_page,num_words
1317     #删除当前显示的图形,防止透明图层堆叠
1318     canvas.delete(logo) 
1319     canvas.delete(plot)
1320     canvas.delete(bg)
1321     canvas.delete(clouds)
1322     canvas.delete(num_page)
1323     canvas.delete(num_words)
1324     window.update() #刷新界面
1325     #重绘画图层
1326     plot = canvas.create_image(948.0,398.0,image=plot_image_17)
1327     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_17)
1328     try:    #没有数据就不要阴影
1329         bg = canvas.create_image(268.0,291.0,image=bg_image_17)
1330     except:  pass
1331     clouds = canvas.create_image(268.0,291.0,image=clouds_image_17)
1332 
1333     try:    #没有统计数据则显示空格
1334         local_page = txt_dict["宁夏"][1]
1335         local_words = txt_dict["宁夏"][0]
1336     except:
1337         local_page = "    "
1338         local_words = "    "
1339     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1340     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1341     
1342     all_off()   #关闭所有button_on显示
1343     on_17.place(x=241.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1344     
1345     print("button_17 on")
1346     window.update() #刷新界面
1347 
1348 button_image_17 = PhotoImage(
1349     file=relative_to_assets("button_17_off.png"))
1350 button_17 = Button(
1351     image=button_image_17,
1352     borderwidth=0,
1353     highlightthickness=0,
1354     command=change_17,
1355     relief="flat"
1356 )
1357 button_17.config(cursor="hand2") #增加鼠标悬浮时的效果
1358 button_17.place(
1359     x=241.0,
1360     y=738.0,
1361     width=35.0,
1362     height=20.0
1363 )
1364 
1365 def change_18():
1366     global logo,plot,bg,clouds,num_page,num_words
1367     #删除当前显示的图形,防止透明图层堆叠
1368     canvas.delete(logo) 
1369     canvas.delete(plot)
1370     canvas.delete(bg)
1371     canvas.delete(clouds)
1372     canvas.delete(num_page)
1373     canvas.delete(num_words)
1374     window.update() #刷新界面
1375     #重绘画图层
1376     plot = canvas.create_image(948.0,398.0,image=plot_image_18)
1377     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_18)
1378     try:    #没有数据就不要阴影
1379         bg = canvas.create_image(268.0,291.0,image=bg_image_18)
1380     except:  pass
1381     clouds = canvas.create_image(268.0,291.0,image=clouds_image_18)
1382 
1383     try:    #没有统计数据则显示空格
1384         local_page = txt_dict["沈阳"][1]
1385         local_words = txt_dict["沈阳"][0]
1386     except:
1387         local_page = "    "
1388         local_words = "    "
1389     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1390     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1391     
1392     all_off()   #关闭所有button_on显示
1393     on_18.place(x=511.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1394     
1395     print("button_18 on")
1396     window.update() #刷新界面
1397 
1398 button_image_18 = PhotoImage(
1399     file=relative_to_assets("button_18_off.png"))
1400 button_18 = Button(
1401     image=button_image_18,
1402     borderwidth=0,
1403     highlightthickness=0,
1404     command=change_18,
1405     relief="flat"
1406 )
1407 button_18.config(cursor="hand2") #增加鼠标悬浮时的效果
1408 button_18.place(
1409     x=511.0,
1410     y=738.0,
1411     width=35.0,
1412     height=20.0
1413 )
1414 
1415 def change_19():
1416     global logo,plot,bg,clouds,num_page,num_words
1417     #删除当前显示的图形,防止透明图层堆叠
1418     canvas.delete(logo) 
1419     canvas.delete(plot)
1420     canvas.delete(bg)
1421     canvas.delete(clouds)
1422     canvas.delete(num_page)
1423     canvas.delete(num_words)
1424     window.update() #刷新界面
1425     #重绘画图层
1426     plot = canvas.create_image(948.0,398.0,image=plot_image_19)
1427     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_19)
1428     try:    #没有数据就不要阴影
1429         bg = canvas.create_image(268.0,291.0,image=bg_image_19)
1430     except:  pass
1431     clouds = canvas.create_image(268.0,291.0,image=clouds_image_19)
1432 
1433     try:    #没有统计数据则显示空格
1434         local_page = txt_dict["广西"][1]
1435         local_words = txt_dict["广西"][0]
1436     except:
1437         local_page = "    "
1438         local_words = "    "
1439     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1440     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1441     
1442     all_off()   #关闭所有button_on显示
1443     on_19.place(x=746.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1444     
1445     print("button_19 on")
1446     window.update() #刷新界面
1447 
1448 button_image_19 = PhotoImage(
1449     file=relative_to_assets("button_19_off.png"))
1450 button_19 = Button(
1451     image=button_image_19,
1452     borderwidth=0,
1453     highlightthickness=0,
1454     command=change_19,
1455     relief="flat"
1456 )
1457 button_19.config(cursor="hand2") #增加鼠标悬浮时的效果
1458 button_19.place(
1459     x=746.0,
1460     y=708.0,
1461     width=35.0,
1462     height=20.0
1463 )
1464 
1465 def change_20():
1466     global logo,plot,bg,clouds,num_page,num_words
1467     #删除当前显示的图形,防止透明图层堆叠
1468     canvas.delete(logo) 
1469     canvas.delete(plot)
1470     canvas.delete(bg)
1471     canvas.delete(clouds)
1472     canvas.delete(num_page)
1473     canvas.delete(num_words)
1474     window.update() #刷新界面
1475     #重绘画图层
1476     plot = canvas.create_image(948.0,398.0,image=plot_image_20)
1477     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_20)
1478     try:    #没有数据就不要阴影
1479         bg = canvas.create_image(268.0,291.0,image=bg_image_20)
1480     except:  pass
1481     clouds = canvas.create_image(268.0,291.0,image=clouds_image_20)
1482 
1483     try:    #没有统计数据则显示空格
1484         local_page = txt_dict["济南"][1]
1485         local_words = txt_dict["济南"][0]
1486     except:
1487         local_page = "    "
1488         local_words = "    "
1489     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1490     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1491     
1492     all_off()   #关闭所有button_on显示
1493     on_20.place(x=701.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1494     
1495     print("button_20 on")
1496     window.update() #刷新界面
1497 
1498 button_image_20 = PhotoImage(
1499     file=relative_to_assets("button_20_off.png"))
1500 button_20 = Button(
1501     image=button_image_20,
1502     borderwidth=0,
1503     highlightthickness=0,
1504     command=change_20,
1505     relief="flat"
1506 )
1507 button_20.config(cursor="hand2") #增加鼠标悬浮时的效果
1508 button_20.place(
1509     x=701.0,
1510     y=738.0,
1511     width=35.0,
1512     height=20.0
1513 )
1514 
1515 def change_21():
1516     global logo,plot,bg,clouds,num_page,num_words
1517     #删除当前显示的图形,防止透明图层堆叠
1518     canvas.delete(logo) 
1519     canvas.delete(plot)
1520     canvas.delete(bg)
1521     canvas.delete(clouds)
1522     canvas.delete(num_page)
1523     canvas.delete(num_words)
1524     window.update() #刷新界面
1525     #重绘画图层
1526     plot = canvas.create_image(948.0,398.0,image=plot_image_21)
1527     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_21)
1528     try:    #没有数据就不要阴影
1529         bg = canvas.create_image(268.0,291.0,image=bg_image_21)
1530     except:  pass
1531     clouds = canvas.create_image(268.0,291.0,image=clouds_image_21)
1532 
1533     try:    #没有统计数据则显示空格
1534         local_page = txt_dict["吉林"][1]
1535         local_words = txt_dict["吉林"][0]
1536     except:
1537         local_page = "    "
1538         local_words = "    "
1539     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1540     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1541     
1542     all_off()   #关闭所有button_on显示
1543     on_21.place(x=196.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1544     
1545     print("button_21 on")
1546     window.update() #刷新界面
1547 
1548 button_image_21 = PhotoImage(
1549     file=relative_to_assets("button_21_off.png"))
1550 button_21 = Button(
1551     image=button_image_21,
1552     borderwidth=0,
1553     highlightthickness=0,
1554     command=change_21,
1555     relief="flat"
1556 )
1557 button_21.config(cursor="hand2") #增加鼠标悬浮时的效果
1558 button_21.place(
1559     x=196.0,
1560     y=708.0,
1561     width=35.0,
1562     height=20.0
1563 )
1564 
1565 def change_22():
1566     global logo,plot,bg,clouds,num_page,num_words
1567     #删除当前显示的图形,防止透明图层堆叠
1568     canvas.delete(logo) 
1569     canvas.delete(plot)
1570     canvas.delete(bg)
1571     canvas.delete(clouds)
1572     canvas.delete(num_page)
1573     canvas.delete(num_words)
1574     window.update() #刷新界面
1575     #重绘画图层
1576     plot = canvas.create_image(948.0,398.0,image=plot_image_22)
1577     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_22)
1578     try:    #没有数据就不要阴影
1579         bg = canvas.create_image(268.0,291.0,image=bg_image_22)
1580     except:  pass
1581     clouds = canvas.create_image(268.0,291.0,image=clouds_image_22)
1582 
1583     try:    #没有统计数据则显示空格
1584         local_page = txt_dict["陕西"][1]
1585         local_words = txt_dict["陕西"][0]
1586     except:
1587         local_page = "    "
1588         local_words = "    "
1589     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1590     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1591     
1592     all_off()   #关闭所有button_on显示
1593     on_22.place(x=151.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1594     
1595     print("button_22 on")
1596     window.update() #刷新界面
1597 
1598 button_image_22 = PhotoImage(
1599     file=relative_to_assets("button_22_off.png"))
1600 button_22 = Button(
1601     image=button_image_22,
1602     borderwidth=0,
1603     highlightthickness=0,
1604     command=change_22,
1605     relief="flat"
1606 )
1607 button_22.config(cursor="hand2") #增加鼠标悬浮时的效果
1608 button_22.place(
1609     x=151.0,
1610     y=738.0,
1611     width=35.0,
1612     height=20.0
1613 )
1614 
1615 def change_23():
1616     global logo,plot,bg,clouds,num_page,num_words
1617     #删除当前显示的图形,防止透明图层堆叠
1618     canvas.delete(logo) 
1619     canvas.delete(plot)
1620     canvas.delete(bg)
1621     canvas.delete(clouds)
1622     canvas.delete(num_page)
1623     canvas.delete(num_words)
1624     window.update() #刷新界面
1625     #重绘画图层
1626     plot = canvas.create_image(948.0,398.0,image=plot_image_23)
1627     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_23)
1628     try:    #没有数据就不要阴影
1629         bg = canvas.create_image(268.0,291.0,image=bg_image_23)
1630     except:  pass
1631     clouds = canvas.create_image(268.0,291.0,image=clouds_image_23)
1632 
1633     try:    #没有统计数据则显示空格
1634         local_page = txt_dict["江西"][1]
1635         local_words = txt_dict["江西"][0]
1636     except:
1637         local_page = "    "
1638         local_words = "    "
1639     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1640     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1641     
1642     all_off()   #关闭所有button_on显示
1643     on_23.place(x=466.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1644     
1645     print("button_23 on")
1646     window.update() #刷新界面
1647 
1648 button_image_23 = PhotoImage(
1649     file=relative_to_assets("button_23_off.png"))
1650 button_23 = Button(
1651     image=button_image_23,
1652     borderwidth=0,
1653     highlightthickness=0,
1654     command=change_23,
1655     relief="flat"
1656 )
1657 button_23.config(cursor="hand2") #增加鼠标悬浮时的效果
1658 button_23.place(
1659     x=466.0,
1660     y=708.0,
1661     width=35.0,
1662     height=20.0
1663 )
1664 
1665 def change_24():
1666     global logo,plot,bg,clouds,num_page,num_words
1667     #删除当前显示的图形,防止透明图层堆叠
1668     canvas.delete(logo) 
1669     canvas.delete(plot)
1670     canvas.delete(bg)
1671     canvas.delete(clouds)
1672     canvas.delete(num_page)
1673     canvas.delete(num_words)
1674     window.update() #刷新界面
1675     #重绘画图层
1676     plot = canvas.create_image(948.0,398.0,image=plot_image_24)
1677     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_24)
1678     try:    #没有数据就不要阴影
1679         bg = canvas.create_image(268.0,291.0,image=bg_image_24)
1680     except:  pass
1681     clouds = canvas.create_image(268.0,291.0,image=clouds_image_24)
1682 
1683     try:    #没有统计数据则显示空格
1684         local_page = txt_dict["青岛"][1]
1685         local_words = txt_dict["青岛"][0]
1686     except:
1687         local_page = "    "
1688         local_words = "    "
1689     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1690     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1691     
1692     all_off()   #关闭所有button_on显示
1693     on_24.place(x=421.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1694     
1695     print("button_24 on")
1696     window.update() #刷新界面
1697 
1698 button_image_24 = PhotoImage(
1699     file=relative_to_assets("button_24_off.png"))
1700 button_24 = Button(
1701     image=button_image_24,
1702     borderwidth=0,
1703     highlightthickness=0,
1704     command=change_24,
1705     relief="flat"
1706 )
1707 button_24.config(cursor="hand2") #增加鼠标悬浮时的效果
1708 button_24.place(
1709     x=421.0,
1710     y=738.0,
1711     width=35.0,
1712     height=20.0
1713 )
1714 
1715 def change_25():
1716     global logo,plot,bg,clouds,num_page,num_words
1717     #删除当前显示的图形,防止透明图层堆叠
1718     canvas.delete(logo) 
1719     canvas.delete(plot)
1720     canvas.delete(bg)
1721     canvas.delete(clouds)
1722     canvas.delete(num_page)
1723     canvas.delete(num_words)
1724     window.update() #刷新界面
1725     #重绘画图层
1726     plot = canvas.create_image(948.0,398.0,image=plot_image_25)
1727     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_25)
1728     try:    #没有数据就不要阴影
1729         bg = canvas.create_image(268.0,291.0,image=bg_image_25)
1730     except:  pass
1731     clouds = canvas.create_image(268.0,291.0,image=clouds_image_25)
1732 
1733     try:    #没有统计数据则显示空格
1734         local_page = txt_dict["湖南"][1]
1735         local_words = txt_dict["湖南"][0]
1736     except:
1737         local_page = "    "
1738         local_words = "    "
1739     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1740     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1741     
1742     all_off()   #关闭所有button_on显示
1743     on_25.place(x=656.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1744     
1745     print("button_25 on")
1746     window.update() #刷新界面
1747 
1748 button_image_25 = PhotoImage(
1749     file=relative_to_assets("button_25_off.png"))
1750 button_25 = Button(
1751     image=button_image_25,
1752     borderwidth=0,
1753     highlightthickness=0,
1754     command=change_25,
1755     relief="flat"
1756 )
1757 button_25.config(cursor="hand2") #增加鼠标悬浮时的效果
1758 button_25.place(
1759     x=656.0,
1760     y=708.0,
1761     width=35.0,
1762     height=20.0
1763 )
1764 
1765 def change_26():
1766     global logo,plot,bg,clouds,num_page,num_words
1767     #删除当前显示的图形,防止透明图层堆叠
1768     canvas.delete(logo) 
1769     canvas.delete(plot)
1770     canvas.delete(bg)
1771     canvas.delete(clouds)
1772     canvas.delete(num_page)
1773     canvas.delete(num_words)
1774     window.update() #刷新界面
1775     #重绘画图层
1776     plot = canvas.create_image(948.0,398.0,image=plot_image_26)
1777     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_26)
1778     try:    #没有数据就不要阴影
1779         bg = canvas.create_image(268.0,291.0,image=bg_image_26)
1780     except:  pass
1781     clouds = canvas.create_image(268.0,291.0,image=clouds_image_26)
1782 
1783     try:    #没有统计数据则显示空格
1784         local_page = txt_dict["南京"][1]
1785         local_words = txt_dict["南京"][0]
1786     except:
1787         local_page = "    "
1788         local_words = "    "
1789     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1790     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1791     
1792     all_off()   #关闭所有button_on显示
1793     on_26.place(x=611.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1794     
1795     print("button_26 on")
1796     window.update() #刷新界面
1797 
1798 button_image_26 = PhotoImage(
1799     file=relative_to_assets("button_26_off.png"))
1800 button_26 = Button(
1801     image=button_image_26,
1802     borderwidth=0,
1803     highlightthickness=0,
1804     command=change_26,
1805     relief="flat"
1806 )
1807 button_26.config(cursor="hand2") #增加鼠标悬浮时的效果
1808 button_26.place(
1809     x=611.0,
1810     y=738.0,
1811     width=35.0,
1812     height=20.0
1813 )
1814 
1815 def change_27():
1816     global logo,plot,bg,clouds,num_page,num_words
1817     #删除当前显示的图形,防止透明图层堆叠
1818     canvas.delete(logo) 
1819     canvas.delete(plot)
1820     canvas.delete(bg)
1821     canvas.delete(clouds)
1822     canvas.delete(num_page)
1823     canvas.delete(num_words)
1824     window.update() #刷新界面
1825     #重绘画图层
1826     plot = canvas.create_image(948.0,398.0,image=plot_image_27)
1827     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_27)
1828     try:    #没有数据就不要阴影
1829         bg = canvas.create_image(268.0,291.0,image=bg_image_27)
1830     except:  pass
1831     clouds = canvas.create_image(268.0,291.0,image=clouds_image_27)
1832 
1833     try:    #没有统计数据则显示空格
1834         local_page = txt_dict["浙江"][1]
1835         local_words = txt_dict["浙江"][0]
1836     except:
1837         local_page = "    "
1838         local_words = "    "
1839     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1840     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1841     
1842     all_off()   #关闭所有button_on显示
1843     on_27.place(x=331.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1844     
1845     print("button_27 on")
1846     window.update() #刷新界面
1847 
1848 button_image_27 = PhotoImage(
1849     file=relative_to_assets("button_27_off.png"))
1850 button_27 = Button(
1851     image=button_image_27,
1852     borderwidth=0,
1853     highlightthickness=0,
1854     command=change_27,
1855     relief="flat"
1856 )
1857 button_27.config(cursor="hand2") #增加鼠标悬浮时的效果
1858 button_27.place(
1859     x=331.0,
1860     y=708.0,
1861     width=35.0,
1862     height=20.0
1863 )
1864 
1865 def change_28():
1866     global logo,plot,bg,clouds,num_page,num_words
1867     #删除当前显示的图形,防止透明图层堆叠
1868     canvas.delete(logo) 
1869     canvas.delete(plot)
1870     canvas.delete(bg)
1871     canvas.delete(clouds)
1872     canvas.delete(num_page)
1873     canvas.delete(num_words)
1874     window.update() #刷新界面
1875     #重绘画图层
1876     plot = canvas.create_image(948.0,398.0,image=plot_image_28)
1877     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_28)
1878     try:    #没有数据就不要阴影
1879         bg = canvas.create_image(268.0,291.0,image=bg_image_28)
1880     except:  pass
1881     clouds = canvas.create_image(268.0,291.0,image=clouds_image_28)
1882 
1883     try:    #没有统计数据则显示空格
1884         local_page = txt_dict["新疆"][1]
1885         local_words = txt_dict["新疆"][0]
1886     except:
1887         local_page = "    "
1888         local_words = "    "
1889     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1890     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1891     
1892     all_off()   #关闭所有button_on显示
1893     on_28.place(x=286.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1894     
1895     print("button_28 on")
1896     window.update() #刷新界面
1897 
1898 button_image_28 = PhotoImage(
1899     file=relative_to_assets("button_28_off.png"))
1900 button_28 = Button(
1901     image=button_image_28,
1902     borderwidth=0,
1903     highlightthickness=0,
1904     command=change_28,
1905     relief="flat"
1906 )
1907 button_28.config(cursor="hand2") #增加鼠标悬浮时的效果
1908 button_28.place(
1909     x=286.0,
1910     y=738.0,
1911     width=35.0,
1912     height=20.0
1913 )
1914 
1915 def change_29():
1916     global logo,plot,bg,clouds,num_page,num_words
1917     #删除当前显示的图形,防止透明图层堆叠
1918     canvas.delete(logo) 
1919     canvas.delete(plot)
1920     canvas.delete(bg)
1921     canvas.delete(clouds)
1922     canvas.delete(num_page)
1923     canvas.delete(num_words)
1924     window.update() #刷新界面
1925     #重绘画图层
1926     plot = canvas.create_image(948.0,398.0,image=plot_image_29)
1927     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_29)
1928     try:    #没有数据就不要阴影
1929         bg = canvas.create_image(268.0,291.0,image=bg_image_29)
1930     except:  pass
1931     clouds = canvas.create_image(268.0,291.0,image=clouds_image_29)
1932 
1933     try:    #没有统计数据则显示空格
1934         local_page = txt_dict["湖北"][1]
1935         local_words = txt_dict["湖北"][0]
1936     except:
1937         local_page = "    "
1938         local_words = "    "
1939     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1940     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1941     
1942     all_off()   #关闭所有button_on显示
1943     on_29.place(x=611.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1944     
1945     print("button_29 on")
1946     window.update() #刷新界面
1947 
1948 button_image_29 = PhotoImage(
1949     file=relative_to_assets("button_29_off.png"))
1950 button_29 = Button(
1951     image=button_image_29,
1952     borderwidth=0,
1953     highlightthickness=0,
1954     command=change_29,
1955     relief="flat"
1956 )
1957 button_29.config(cursor="hand2") #增加鼠标悬浮时的效果
1958 button_29.place(
1959     x=611.0,
1960     y=708.0,
1961     width=35.0,
1962     height=20.0
1963 )
1964 
1965 def change_30():
1966     global logo,plot,bg,clouds,num_page,num_words
1967     #删除当前显示的图形,防止透明图层堆叠
1968     canvas.delete(logo) 
1969     canvas.delete(plot)
1970     canvas.delete(bg)
1971     canvas.delete(clouds)
1972     canvas.delete(num_page)
1973     canvas.delete(num_words)
1974     window.update() #刷新界面
1975     #重绘画图层
1976     plot = canvas.create_image(948.0,398.0,image=plot_image_30)
1977     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_30)
1978     try:    #没有数据就不要阴影
1979         bg = canvas.create_image(268.0,291.0,image=bg_image_30)
1980     except:  pass
1981     clouds = canvas.create_image(268.0,291.0,image=clouds_image_30)
1982 
1983     try:    #没有统计数据则显示空格
1984         local_page = txt_dict["哈尔滨"][1]
1985         local_words = txt_dict["哈尔滨"][0]
1986     except:
1987         local_page = "    "
1988         local_words = "    "
1989     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1990     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
1991     
1992     all_off()   #关闭所有button_on显示
1993     on_30.place(x=556.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
1994     
1995     print("button_30 on")
1996     window.update() #刷新界面
1997 
1998 button_image_30 = PhotoImage(
1999     file=relative_to_assets("button_30_off.png"))
2000 button_30 = Button(
2001     image=button_image_30,
2002     borderwidth=0,
2003     highlightthickness=0,
2004     command=change_30,
2005     relief="flat"
2006 )
2007 button_30.config(cursor="hand2") #增加鼠标悬浮时的效果
2008 button_30.place(
2009     x=556.0,
2010     y=738.0,
2011     width=45.0,
2012     height=20.0
2013 )
2014 
2015 def change_31():
2016     global logo,plot,bg,clouds,num_page,num_words
2017     #删除当前显示的图形,防止透明图层堆叠
2018     canvas.delete(logo) 
2019     canvas.delete(plot)
2020     canvas.delete(bg)
2021     canvas.delete(clouds)
2022     canvas.delete(num_page)
2023     canvas.delete(num_words)
2024     window.update() #刷新界面
2025     #重绘画图层
2026     plot = canvas.create_image(948.0,398.0,image=plot_image_31)
2027     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_31)
2028     try:    #没有数据就不要阴影
2029         bg = canvas.create_image(268.0,291.0,image=bg_image_31)
2030     except:  pass
2031     clouds = canvas.create_image(268.0,291.0,image=clouds_image_31)
2032 
2033     try:    #没有统计数据则显示空格
2034         local_page = txt_dict["河南"][1]
2035         local_words = txt_dict["河南"][0]
2036     except:
2037         local_page = "    "
2038         local_words = "    "
2039     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
2040     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
2041     
2042     all_off()   #关闭所有button_on显示
2043     on_31.place(x=556.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
2044     
2045     print("button_31 on")
2046     window.update() #刷新界面
2047 
2048 button_image_31 = PhotoImage(
2049     file=relative_to_assets("button_31_off.png"))
2050 button_31 = Button(
2051     image=button_image_31,
2052     borderwidth=0,
2053     highlightthickness=0,
2054     command=change_31,
2055     relief="flat"
2056 )
2057 button_31.config(cursor="hand2") #增加鼠标悬浮时的效果
2058 button_31.place(
2059     x=556.0,
2060     y=708.0,
2061     width=45.0,
2062     height=20.0
2063 )
2064 
2065 def change_32():
2066     global logo,plot,bg,clouds,num_page,num_words
2067     #删除当前显示的图形,防止透明图层堆叠
2068     canvas.delete(logo) 
2069     canvas.delete(plot)
2070     canvas.delete(bg)
2071     canvas.delete(clouds)
2072     canvas.delete(num_page)
2073     canvas.delete(num_words)
2074     window.update() #刷新界面
2075     #重绘画图层
2076     plot = canvas.create_image(948.0,398.0,image=plot_image_32)
2077     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_32)
2078     try:    #没有数据就不要阴影
2079         bg = canvas.create_image(268.0,291.0,image=bg_image_32)
2080     except:  pass
2081     clouds = canvas.create_image(268.0,291.0,image=clouds_image_32)
2082 
2083     try:    #没有统计数据则显示空格
2084         local_page = txt_dict["海南"][1]
2085         local_words = txt_dict["海南"][0]
2086     except:
2087         local_page = "    "
2088         local_words = "    "
2089     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
2090     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
2091     
2092     all_off()   #关闭所有button_on显示
2093     on_32.place(x=791.0,y=708.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
2094     
2095     print("button_32 on")
2096     window.update() #刷新界面
2097 
2098 button_image_32 = PhotoImage(
2099     file=relative_to_assets("button_32_off.png"))
2100 button_32 = Button(
2101     image=button_image_32,
2102     borderwidth=0,
2103     highlightthickness=0,
2104     command=change_32,
2105     relief="flat"
2106 )
2107 button_32.config(cursor="hand2") #增加鼠标悬浮时的效果
2108 button_32.place(
2109     x=791.0,
2110     y=708.0,
2111     width=35.0,
2112     height=20.0
2113 )
2114 
2115 def change_33():
2116     global logo,plot,bg,clouds,num_page,num_words
2117     #删除当前显示的图形,防止透明图层堆叠
2118     canvas.delete(logo) 
2119     canvas.delete(plot)
2120     canvas.delete(bg)
2121     canvas.delete(clouds)
2122     canvas.delete(num_page)
2123     canvas.delete(num_words)
2124     window.update() #刷新界面
2125     #重绘画图层
2126     plot = canvas.create_image(948.0,398.0,image=plot_image_33)
2127     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_33)
2128     try:    #没有数据就不要阴影
2129         bg = canvas.create_image(268.0,291.0,image=bg_image_33)
2130     except:  pass
2131     clouds = canvas.create_image(268.0,291.0,image=clouds_image_33)
2132 
2133     try:    #没有统计数据则显示空格
2134         local_page = txt_dict["武汉"][1]
2135         local_words = txt_dict["武汉"][0]
2136     except:
2137         local_page = "    "
2138         local_words = "    "
2139     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
2140     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
2141     
2142     all_off()   #关闭所有button_on显示
2143     on_33.place(x=746.0,y=738.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
2144     
2145     print("button_33 on")
2146     window.update() #刷新界面
2147 
2148 button_image_33 = PhotoImage(
2149     file=relative_to_assets("button_33_off.png"))
2150 button_33 = Button(
2151     image=button_image_33,
2152     borderwidth=0,
2153     highlightthickness=0,
2154     command=change_33,
2155     relief="flat"
2156 )
2157 button_33.config(cursor="hand2") #增加鼠标悬浮时的效果
2158 button_33.place(
2159     x=746.0,
2160     y=738.0,
2161     width=35.0,
2162     height=20.0
2163 )
2164 
2165 def change_34():
2166     global logo,plot,bg,clouds,num_page,num_words
2167     #删除当前显示的图形,防止透明图层堆叠
2168     canvas.delete(logo) 
2169     canvas.delete(plot)
2170     canvas.delete(bg)
2171     canvas.delete(clouds)
2172     canvas.delete(num_page)
2173     canvas.delete(num_words)
2174     window.update() #刷新界面
2175     #重绘画图层
2176     plot = canvas.create_image(948.0,398.0,image=plot_image_34)
2177     logo = canvas.create_image(1301.328857421875,65.2177734375,image=logo_image_34)
2178     try:    #没有数据就不要阴影
2179         bg = canvas.create_image(268.0,291.0,image=bg_image_34)
2180     except:  pass
2181     clouds = canvas.create_image(268.0,291.0,image=clouds_image_34)
2182 
2183     try:    #没有统计数据则显示空格
2184         local_page = txt_dict["广州"][1]
2185         local_words = txt_dict["广州"][0]
2186     except:
2187         local_page = "    "
2188         local_words = "    "
2189     num_page = canvas.create_text(220.0,465.0,anchor="nw",text=local_page+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
2190     num_words = canvas.create_text(210.0,506.0,anchor="nw",text=local_words+"",fill="#7F7F7F",font=("MicrosoftHimalaya", 19 * -1))
2191     
2192     all_off()   #关闭所有button_on显示
2193     on_34.place(x=791.0,y=739.0,width=35.0,height=20.0)   #显示button_on图层(坐标对应button.place())
2194     
2195     print("button_34 on")
2196     window.update() #刷新界面
2197 
2198 button_image_34 = PhotoImage(
2199     file=relative_to_assets("button_34_off.png"))
2200 button_34 = Button(
2201     image=button_image_34,
2202     borderwidth=0,
2203     highlightthickness=0,
2204     command=change_34,
2205     relief="flat"
2206 )
2207 button_34.config(cursor="hand2") #增加鼠标悬浮时的效果
2208 button_34.place(
2209     x=791.0,
2210     y=739.0,
2211     width=35.0,
2212     height=20.0
2213 )
2214 
2215 
2216 ##button_on显示初始化
2217 #通过直接创建图层覆盖按钮同时实现选中显示和无法再点击的效果
2218 on_image_1=  PhotoImage(file=relative_to_assets("button_1_on.png"))
2219 on_1 = Label(window,image=on_image_1)   #初始化时不place()即隐藏
2220 
2221 on_image_2=  PhotoImage(file=relative_to_assets("button_2_on.png"))
2222 on_2 = Label(window,image=on_image_2)
2223 
2224 on_image_3=  PhotoImage(file=relative_to_assets("button_3_on.png"))
2225 on_3 = Label(window,image=on_image_3)
2226 
2227 on_image_4=  PhotoImage(file=relative_to_assets("button_4_on.png"))
2228 on_4 = Label(window,image=on_image_4)
2229 
2230 on_image_5=  PhotoImage(file=relative_to_assets("button_5_on.png"))
2231 on_5 = Label(window,image=on_image_5)
2232 
2233 on_image_6=  PhotoImage(file=relative_to_assets("button_6_on.png"))
2234 on_6 = Label(window,image=on_image_6)
2235 
2236 on_image_7=  PhotoImage(file=relative_to_assets("button_7_on.png"))
2237 on_7 = Label(window,image=on_image_7)
2238 
2239 on_image_8=  PhotoImage(file=relative_to_assets("button_8_on.png"))
2240 on_8 = Label(window,image=on_image_8)
2241 
2242 on_image_9=  PhotoImage(file=relative_to_assets("button_9_on.png"))
2243 on_9 = Label(window,image=on_image_9)
2244 
2245 on_image_10=  PhotoImage(file=relative_to_assets("button_10_on.png"))
2246 on_10 = Label(window,image=on_image_10)
2247 
2248 on_image_11=  PhotoImage(file=relative_to_assets("button_11_on.png"))
2249 on_11 = Label(window,image=on_image_11)
2250 
2251 on_image_12=  PhotoImage(file=relative_to_assets("button_12_on.png"))
2252 on_12 = Label(window,image=on_image_12)
2253 
2254 on_image_13=  PhotoImage(file=relative_to_assets("button_13_on.png"))
2255 on_13 = Label(window,image=on_image_13)
2256 
2257 on_image_14=  PhotoImage(file=relative_to_assets("button_14_on.png"))
2258 on_14 = Label(window,image=on_image_14)
2259 
2260 on_image_15=  PhotoImage(file=relative_to_assets("button_15_on.png"))
2261 on_15 = Label(window,image=on_image_15)
2262 
2263 on_image_16=  PhotoImage(file=relative_to_assets("button_16_on.png"))
2264 on_16 = Label(window,image=on_image_16)
2265 
2266 on_image_17=  PhotoImage(file=relative_to_assets("button_17_on.png"))
2267 on_17 = Label(window,image=on_image_17)
2268 
2269 on_image_18=  PhotoImage(file=relative_to_assets("button_18_on.png"))
2270 on_18 = Label(window,image=on_image_18)
2271 
2272 on_image_19=  PhotoImage(file=relative_to_assets("button_19_on.png"))
2273 on_19 = Label(window,image=on_image_19)
2274 
2275 on_image_20=  PhotoImage(file=relative_to_assets("button_20_on.png"))
2276 on_20 = Label(window,image=on_image_20)
2277 
2278 on_image_21=  PhotoImage(file=relative_to_assets("button_21_on.png"))
2279 on_21 = Label(window,image=on_image_21)
2280 
2281 on_image_22=  PhotoImage(file=relative_to_assets("button_22_on.png"))
2282 on_22 = Label(window,image=on_image_22)
2283 
2284 on_image_23=  PhotoImage(file=relative_to_assets("button_23_on.png"))
2285 on_23 = Label(window,image=on_image_23)
2286 
2287 on_image_24=  PhotoImage(file=relative_to_assets("button_24_on.png"))
2288 on_24 = Label(window,image=on_image_24)
2289 
2290 on_image_25=  PhotoImage(file=relative_to_assets("button_25_on.png"))
2291 on_25 = Label(window,image=on_image_25)
2292 
2293 on_image_26=  PhotoImage(file=relative_to_assets("button_26_on.png"))
2294 on_26 = Label(window,image=on_image_26)
2295 
2296 on_image_27=  PhotoImage(file=relative_to_assets("button_27_on.png"))
2297 on_27 = Label(window,image=on_image_27)
2298 
2299 on_image_28=  PhotoImage(file=relative_to_assets("button_28_on.png"))
2300 on_28 = Label(window,image=on_image_28)
2301 
2302 on_image_29=  PhotoImage(file=relative_to_assets("button_29_on.png"))
2303 on_29 = Label(window,image=on_image_29)
2304 
2305 on_image_30=  PhotoImage(file=relative_to_assets("button_30_on.png"))
2306 on_30 = Label(window,image=on_image_30)
2307 
2308 on_image_31=  PhotoImage(file=relative_to_assets("button_31_on.png"))
2309 on_31 = Label(window,image=on_image_31)
2310 
2311 on_image_32=  PhotoImage(file=relative_to_assets("button_32_on.png"))
2312 on_32 = Label(window,image=on_image_32)
2313 
2314 on_image_33=  PhotoImage(file=relative_to_assets("button_33_on.png"))
2315 on_33 = Label(window,image=on_image_33)
2316 
2317 on_image_34=  PhotoImage(file=relative_to_assets("button_34_on.png"))
2318 on_34 = Label(window,image=on_image_34)
2319 
2320 def all_off():  #隐藏所有on图层  #要放在button之后创建以放于button上层
2321     on_1.place_forget()
2322     on_2.place_forget()
2323     on_3.place_forget()
2324     on_4.place_forget()
2325     on_5.place_forget()
2326     on_6.place_forget()
2327     on_7.place_forget()
2328     on_8.place_forget()
2329     on_9.place_forget()
2330     on_10.place_forget()
2331     on_11.place_forget()
2332     on_12.place_forget()
2333     on_13.place_forget()
2334     on_14.place_forget()
2335     on_15.place_forget()
2336     on_16.place_forget()
2337     on_17.place_forget()
2338     on_18.place_forget()
2339     on_19.place_forget()
2340     on_20.place_forget()
2341     on_21.place_forget()
2342     on_22.place_forget()
2343     on_23.place_forget()
2344     on_24.place_forget()
2345     on_25.place_forget()
2346     on_26.place_forget()
2347     on_27.place_forget()
2348     on_28.place_forget()
2349     on_29.place_forget()
2350     on_30.place_forget()
2351     on_31.place_forget()
2352     on_32.place_forget()
2353     on_33.place_forget()
2354     on_34.place_forget()
2355 
2356 #按钮状态初始化
2357 on_1.place(x=61.0,y=708.0,width=35.0,height=20.0)
2358 
2359 window.resizable(False, False)
2360 window.mainloop()
View Code

 

(5)实验结果

  一、爬虫模块

 

 

 

 

 

  

  二、数据分析模块

 

 

 

  三、GUI模块

 

 

 

 

 

 

 

 

 

   华为云上运行

 

 

 

 

 

 

 

3. 实验过程中遇到的问题和解决过程

  • 问题1:可视化程序无法在华为云上运行
  • 问题1解决方案:查找了CSDN上所有有关文件并资讯华为云技术客服后仍未解决
  • 问题2:GUI界面图层顺序不正确
  • 问题2解决方案:查找后发现要将最上层的放在最后初始化
  • 问题3:华为云服务器安装docx库报错
  • 问题3解决方案:升级pip3后解决
  • 问题4:华为云服务器安装worldcloud库报错
  • 问题4解决方案:上网查找后发现是缺少devel文件,但网上答案均是python2的配置方法,尝试后通过以下代码解决
yum install python3-devel
  • 问题5:styleclloud库无法生成以透明图层为背景的词云
  • 问题5解决方案:退而求其次,通过wordcloud库生成词云
  • 问题6:worldcloud库生成词云时无法像stylecloud库一样调用palettable中的配色方案
  • 问题6解决方案:采用worldcloud库中的mathlib调色方案进行下位替代
  • 问题7:GUI界面清晰度不高
  • 问题7解决方案:通过ctypes库调用api设置缩放因子提高清晰度
  • 问题8:tkinter库制作GUI无法高清图(由于是以像素尺寸显示,会超级大)
  • 问题8解决方案:未找到解决方案
  • 问题9:统计图生成后发现无效数据的存在
  • 问题9解决方案:通过设置屏蔽词得到改善
  • 问题10:各地logo数量较多,逐个编辑工作量较大
  • 问题10解决方案:通过photoshop中的动作录制和批处理后进行手动微调减少工作量
  • 其余小问题在调试时不计其数,已经记不清了...

 

4.主要参考资料

 

5. 全课总结与感想体会

  一个学期,在Python选修课上学习了Python语言基础、流程控制语句 、序列的应用、字符串与正则表达式、函数、面向对象程序设计、基础的文件操作及异常处理,也在王老师的引领下初窥了网络编程技术、爬虫开发和数据库的操作,虽然很多在这之前已经有所了解,不过也重新巩固了基础。

  在王志强老师幽默的课堂上时间并不会让人感觉很漫长,转眼一个学期的Python之旅就到达了终点站。在一次次的项目中,我学到了很多,同时我也意识到编程这门学问的博大精深,随着不断向底层的深入,原来看起来是一串串乱码的数据有些已经变成了熟悉的语句。同时在几次项目中,我也认识到了模块化编程和存储结构的重要性,正如Python之禅所说——Readability counts,好的代码应是容易理解的,简洁的,而不是乱七八糟的一堆“屎山”。

  然而,编程学习的旅途还远远没有抵达终点,"Although never is often better than *right* now",让我们在现在,在将来继续更加深入的学习吧!

 

6.一些建议

  老师可以多提供、推荐一些系统性的书籍和学习资料,供有兴趣的同学深入学习

posted @ 2022-05-31 14:27  Ethan-Chase  阅读(120)  评论(0编辑  收藏  举报
-->