前言
其实不单单是python语言,相信很多其他语言的朋友也都很苦恼一件事,那就是图形化界面进度条的做法
我刚接触python tkinter图形化界面时也是一脸懵逼,当时连多线程、多进程都搞不明白的我又怎能搞懂图形化界面。出于对python的热爱,使我一直坚持走到了这步,一路遇到了很多艰险,接下来我把整体的思路和代码实现给大家分享一下。
制作进度条目的
当你觉得需要制作进度条时,肯定是要处理大量数据或者处理大型文件,这时,制作一个进度条可以很直观的显示当前作业进度,也使整个界面显得不是很古板。
制作进度条思路
此处代码只讲python tkinter
如果是有大量任务要处理,类似我上篇文章
就把整个要处理的任务数量存到一个变量中,再用进度条总长度除以这个变量,就能得到每次处理完一个任务进度条增加的长度。
代码展示代码很乱凑合看吧
代码中的进度条库,来自tkinter.ttk
v = int(soup.body.find_all(name = 'em',attrs = {'class':'num'})[0].string.split('/')[1])+1 #漫画搜索关键字的总页数放到变量v里
for p in range(1,v):
r=requests.post(url+'/index.php?m=vod-search-pg-'+str(p)+'-wd-'+kw+'.html') #按关键字爬取每页的漫画
soup=BeautifulSoup(r.text,'html.parser')
pageNumList = soup.find_all(name = 'li',attrs = {'class':'vbox'}) #把每页漫画url以列表形式放入pageNumList变量中,以便制作进度条使用
for x in pageNumList:
self.progress['value'] += 100/(len(pageNumList)*(v-1)) #(重要!!)100为进度条总长度,进度条每次增加的量=进度条总长度/(每页漫画数量*总页数-1)这个-1最好去掉,没有用
self.urlData[x.a['title']] = url+x.a['href'] #把处理后的数据放入变量中,供使用
若是要处理大型文件的上传、下载等的进度条制作,我目前还没有发现怎么做,将来如果有办法的话会再出一篇文章讲。