实验四《Python程序设计》实验报告
2021-2022-7 《Python程序设计》实验四报告
课程:《Python程序设计》
实验日期: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进行界面设计
(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()
二、数据分析模块

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)
三、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()
(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.主要参考资料
- 用 Python 构建漂亮的 GUI!
- How to use Tkinter Designer
- 利用stylecloud制作更酷炫的词云图
- 相见恨晚的Python可视化配色工具
- Palettable
- 【推荐收藏】介绍2种Python绘制词云的手法,你会偷偷pick谁呢?
- python中tkinter较完整的鼠标样式cursor值
- 《Python GUI设计tkinter 从入门到实践》
- 《Python网络爬虫权威指南》
5. 全课总结与感想体会
一个学期,在Python选修课上学习了Python语言基础、流程控制语句 、序列的应用、字符串与正则表达式、函数、面向对象程序设计、基础的文件操作及异常处理,也在王老师的引领下初窥了网络编程技术、爬虫开发和数据库的操作,虽然很多在这之前已经有所了解,不过也重新巩固了基础。
在王志强老师幽默的课堂上时间并不会让人感觉很漫长,转眼一个学期的Python之旅就到达了终点站。在一次次的项目中,我学到了很多,同时我也意识到编程这门学问的博大精深,随着不断向底层的深入,原来看起来是一串串乱码的数据有些已经变成了熟悉的语句。同时在几次项目中,我也认识到了模块化编程和存储结构的重要性,正如Python之禅所说——Readability counts,好的代码应是容易理解的,简洁的,而不是乱七八糟的一堆“屎山”。
然而,编程学习的旅途还远远没有抵达终点,"Although never is often better than *right* now",让我们在现在,在将来继续更加深入的学习吧!
6.一些建议
老师可以多提供、推荐一些系统性的书籍和学习资料,供有兴趣的同学深入学习