#压缩软件
import os
import zipfile
import tkinter
import tkinter.filedialog
import tkinter.messagebox
'''
压缩
1.选择文件按钮 目的:选择要压缩的文件
2.选择文件夹按钮 目的:选择要压缩的文件夹
3.压缩文件按钮 目的:选择压缩后的文件要存入的文件路径
(这个文件要新建,还需要给他取一个帅气的名字)
3.注意事项:要先选择文件或文件夹
4.特点:压缩和解压两个操作是独立分开的 解压
1.选择文件按钮 目的:选择要解压的文件
2.解压文件按钮 目的:选择解压后的文件要存入的文件夹路径
(这个文件夹要新建,还需要给他取一个漂亮的名字)
3.注意事项:在点击压缩文件按钮并压缩文件成功后
不能立刻点击解压文件按钮,要先选择文件,即点击选择文件按钮
4.优点:能够在对话框里面自主选择解压的文件和解压文件的目标文件夹
5.缺点:不能在压缩文件后立即点击解压文件按钮
6.特点:压缩和解压两个操作是独立分开的 特点:
压缩操作:选择文件和文件夹——>压缩文件
解压操作:选择文件——>解压文件 注意:bug很多 请不要联系本人
张波微信:zb983978082
''' class zipys:
'''
方法:
界面布局
选取文件
压缩文件
解压文件
特点:
压缩操作:选择文件——>压缩文件
解压操作:选择文件——>解压文件
'''
def __init__(self): self.root = tkinter.Tk()
self.root.minsize(490,400)
self.root.title('波波版压缩软件')
#声明label使用的变量
self.filenames = tkinter.StringVar() #self.val1 = tkinter.StringVar() self.layout()
self.files = ()
self.root.mainloop()
#选取文件 既可以选择要压缩的文件,又可以选择被解压的文件 最大特点是压缩和解压两个操作是独立分开的
def selectfiles(self): #使用文件对话框 选择的即将要压缩/解压的文件全部存入files 组成一个元组 选择一个文件也是一个元组 方便以后压缩/解压操作使用
self.files = tkinter.filedialog.askopenfilenames(title = '请选择压缩/解压的文件,压缩按住Ctrl可以多选')
#打印选择的文件 看看他是什么类型
print(self.files,type(self.files))
#准备显示信息
#临时的路径容器 tmpfiles = []
strvar1 = self.filenames.get()
tmpfiles.append(strvar1) #遍历元组 进行路径的截取和省略操作
for i in self.files:
#判断路径字符个数是否超过指定的长度
if len(i) >= 40:
i = i[:16] + '...' + i[-15:]
#将处理之后的数据存入临时列表
tmpfiles.append(i)
#将所有文件路径组成字符串 写入label
filestr = '\n'.join(tmpfiles)
print(filestr,type(filestr))
#将文件路径组成的字符串写入面板中
self.filenames.set(filestr)
#判断此刻面板中是否有文件
if self.filenames.get() == '':
tkinter.messagebox.showinfo(title='操作结果', message='您没有选择文件')
else:
# 提示用户选取文件成功 按open后的提示信息对话框
tkinter.messagebox.showinfo(title='操作结果', message='选取文件成功:' + '在面板中') def selectdirs(self):
#使用文件夹对话框 添加文件夹 获取的文件夹是一个字符串
self.dirs = tkinter.filedialog.askdirectory(title = '请选择一个文件夹')
#print(self.dirs,type(self.dirs))
#获取原有面板中的内容(字符串) tmpfiles = []
strvar2 = self.filenames.get()
tmpfiles.append(strvar2) # 将处理之后的数据存入临时列表
tmpfiles.append(self.dirs)
# 将所有文件路径组成字符串 写入label
filestr = '\n'.join(tmpfiles)
print(filestr, type(filestr))
# 将文件路径组成的字符串写入面板中
self.filenames.set(filestr)
# 判断此刻面板中是否有文件
if self.filenames.get() == '':
tkinter.messagebox.showinfo(title='操作结果', message='您没有选择文件')
else:
# 提示用户选取文件成功 按open后的提示信息对话框
tkinter.messagebox.showinfo(title='操作结果', message='选取文件夹成功:' + '在面板中') #压缩文件函数
'''
以下压缩操作必须要在选择压缩文件之后执行,把压缩的操作分成了两个按钮
1.选择文件按钮 目的:选择要压缩的文件
2.压缩文件按钮 目的:选择压缩后的文件要存入的文件路径(这个文件要新建,还需要给他取一个漂亮的名字)
3.注意事项:要先选择文件,即点击选择文件按钮
4.特点:压缩和解压两个操作是独立分开的
'''
def zipfiles(self):
try:
#判断是否已选择文件
if self.filenames.get() == '':
#弹出信息提示对话框
tkinter.messagebox.showwarning(title = '警告',message = '请添加要压缩的文件') else:
#之前选的文件要保存到一个目录(文件夹) 这一步的目的就是为了选择一个要保存到的位置
filename = tkinter.filedialog.asksaveasfilename(title = '指定保存压缩文件的位置,并在下面取一个帅气的名字',filetypes = (('zip文件','*.zip'),('所有文件','*.*')))
#self.filename 保存的一个文件路径 现在里面没有任何的东西 要在下面的写入之后才会有文件
print(filename)
#新建压缩文件
zp = zipfile.ZipFile(filename,'a')
#添加文件到压缩文件(遍历操作)
for onefile in self.files:
#括号里面第一个是要写入的文件的路径,第二个是你给她的命名,这里选取的是文件的最后一部分
zp.write(onefile,os.path.basename(onefile)) #关闭压缩文件
zp.close() #提示用户压缩之后的压缩文件的路径
tkinter.messagebox.showinfo(title = '操作结果',message = '压缩成功:'+ filename)
except:
tkinter.messagebox.showinfo(title='提示', message='解压没有完成哦') #解压文件函数
'''
以下解压操作必须要在选择压缩文件之后执行,把解压文件分成了两个按钮
1.选择文件按钮 目的:选择要解压的文件
2.解压文件按钮 目的:选择解压后的文件要存入的文件夹路径(这个文件夹要新建,还需要给他取一个漂亮的名字)
3.注意事项:在点击压缩文件按钮并压缩文件成功后不能立刻点击解压文件按钮,要先选择文件,即点击选择文件按钮
4.优点:能够在对话框里面自主选择解压的文件和解压文件的目标文件
5.缺点:不能在压缩文件后立即点击解压文件按钮
6.特点:压缩和解压两个操作是独立分开的
'''
def extractfiles(self):
try: # 判断是否已选择文件
if self.filenames.get() == '':
# 弹出信息提示对话框
tkinter.messagebox.showwarning(title='警告', message='请添加要解压的文件')
else: #选择解压文件的目标路径 解压后的文件保存到一个文件夹中 这一步的目的就是选择这个文件夹
filename1 = tkinter.filedialog.asksaveasfilename(title = '指定保存解压后文件的位置,并在下面取一个漂亮的名字',filetypes = (('zip文件','*zip'),('所有文件','*.*')))
print(filename1)
#遍历之前选择的压缩文件,虽然只有一个元素,但是他是一个元组
for j in self.files:
#压缩文件是元组 要把它变成字符串 所以要遍历操作
#打开要解压的压缩文件
fp = zipfile.ZipFile(j,'r')
#解压全部文件 括号里面写入的是解压到的目标文件夹路径
fp.extractall(filename1)
#解压指定文件 括号里面第一个写入的是指定解压的文件名称,第二个写入的是解压到的目标文件夹路径
#fp.extract('calcultor.py',self.filename1)
#关闭要解压的压缩文件
fp.close() #提示用户解压的文件的目标路径
tkinter.messagebox.showinfo(title='操作结果', message='解压成功到:' + filename1)
except:
tkinter.messagebox.showinfo(title='提示', message='解压没有完成哦') def clearfiles(self):
#面板清空
self.filenames.set('') def presshelp(self): self.val1 = tkinter.StringVar() newwindows = tkinter.Toplevel(bg = 'white')
newwindows.title('压缩软件说明')
newwindows.minsize(500,550) # 打开文件
zp = open('./压缩软件说明.txt', 'r+')
self.shuoming = zp.read()
print(self.shuoming,type(self.shuoming)) self.val1.set(self.shuoming) label = tkinter.Label(newwindows,bg = 'white',textvariable = self.val1,font = ('黑体',10),anchor = 'nw',justify = 'left')
label.place(x = 10,y = 10) #====================================== 界面布局 ================================================================
def layout(self):
#====================================== 菜单 =====================================================================
#添加菜单组件 #创建总菜单
allmenu = tkinter.Menu(self.root) #添加子菜单(帮助H)
helpmenu = tkinter.Menu(allmenu,tearoff = 0)
allmenu.add_cascade(label = '帮助H',menu = helpmenu) #添加选项卡
helpmenu.add_command(label = '查看帮助',command = self.presshelp) #摆放菜单
self.root.config(menu = allmenu) #============================================= 按钮 =============================================================
#添加文件按钮
btn1 = tkinter.Button(self.root,text = '选择文件',command = self.selectfiles)
btn1.place(x = 15,y = 20,width = 80,height = 40) #添加文件夹按钮
btn2 = tkinter.Button(self.root, text='选择文件夹', command=self.selectdirs)
btn2.place(x=110, y=20, width=80, height=40) #压缩操作按钮
btn3 = tkinter.Button(self.root,text = '压缩文件',command = self.zipfiles)
btn3.place(x = 205,y = 20,width = 80,height = 40) #解压操作按钮
btn4 = tkinter.Button(self.root,text = '解压文件',command = self.extractfiles)
btn4.place(x = 300,y = 20,width = 80,height = 40) #清空操作按钮
btn5 = tkinter.Button(self.root, text='清空文件', command= self.clearfiles)
btn5.place(x= 395, y=20, width=80, height=40) #============================================= 标签 ========================================================
#添加标签按钮
label = tkinter.Label(self.root,bg = 'white',textvariable = self.filenames,anchor = 'nw',justify = 'left')
label.place(x = 15,y = 80,width = 460,height = 300) ys = zipys()

python 波波版压缩软件的更多相关文章

  1. python写的压缩软件

    import tkinterimport tkinter.filedialogimport osimport zipfileimport tkinter.messagebox #创建住窗口root = ...

  2. 用Python写一款属于自己的 简易zip压缩软件 附完成图(适合初学者)

    一.软件描述 用Python tkinter模块写一款属于自己的压缩软件.zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile来操作zip文件,具有功能:zip压缩功能,zip ...

  3. Anaconda 用于科学计算的 Python 发行版

    用于科学计算的 Python 发行版: 1.Anaconda  https://www.continuum.io/    公司continuum.  有商业版本. Anaconda is the le ...

  4. 程序员带你十天快速入门Python,玩转电脑软件开发(一)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  5. bzip2 一种块排序文件压缩软件

    总览 bzip2 [ -cdfkqstvzVL123456789 ] [ filenames ... ] bunzip2 [ -fkvsVL ] [ filenames ... ] bzcat [ - ...

  6. 压缩软件推荐(bandizip)

    提及 Windows 平台的压缩软件,大家往往想起老牌的 WinRAR.开源免费的 7-Zip.国产的快压.好压.360 压缩之类,甚至还有时代的眼泪 WinZip.一直以来,压缩软件因为作为十分基础 ...

  7. python scrapy版 极客学院爬虫V2

    python scrapy版 极客学院爬虫V2 1 基本技术 使用scrapy 2 这个爬虫的难点是 Request中的headers和cookies 尝试过好多次才成功(模拟登录),否则只能抓免费课 ...

  8. 解决winrar压缩软件弹出广告

    最近winrar每次打开压缩包就会弹出一个广告,那是因为winrar是收费软件,注册了就没有广告了.下面我教大家怎么注册来屏蔽广告. 解决方法 1.新建一个txt文件并命名为"rarreg. ...

  9. selenium webdriver (python) 第二版

    前言 对于大多软件测试人员来讲缺乏编程经验(指项目开发经验,大学的C 语言算很基础的编程知识)一直是难以逾越的鸿沟,并不是说测试比开发人员智商低,是国内的大多测试岗位是功能测试为主,在工作时间中,我们 ...

随机推荐

  1. [51nod 1766]树上的最远点对 (树的直径+ST表求lca+线段树)

    [51nod 1766]树上的最远点对 (树的直径+ST表求lca+线段树) 题面 给出一棵N个点的树,Q次询问一点编号在区间[l1,r1]内,另一点编号在区间[l2,r2]内的所有点对距离最大值.\ ...

  2. BZOJ 1912(树的直径+LCA)

    题面 传送门 分析 显然,如果不加边,每条边都要走2次,总答案为2(n-1) 考虑k=1的朴素情况: 加一条边(a,b),这条边和树上a->b的路径形成一个环,这个环上的边只需要走一遍,所以答案 ...

  3. HTML5+Canvas手机拍摄,本地压缩上传图片

    最近在折腾移动站的开发,涉及到了一个手机里面上传图片.于是经过N久的折腾,找到一个插件,用法如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  4. Pandas的高级操作

    pandas数据处理 1. 删除重复元素 使用duplicated()函数检测重复的行,返回元素为布尔类型的Series对象,每个元素对应一行,如果该行不是第一次出现,则元素为True keep参数: ...

  5. 2019 Multi-University Training Contest 1 - 1011 - Function - 数论

    http://acm.hdu.edu.cn/showproblem.php?pid=6588 新学到了一个求n以内与m的gcd的和的快速求法.也就是下面的S1. ①求: $ \sum\limits_{ ...

  6. php数组转换字符串及复选框如何勾选中

    php数组转换字符串及复选框如何勾选中,应用到函数 implode  explode 复选框被选中后如何保存数据,表单提交过来为数组,要转换字符串 用到函数implode if(!empty($_PO ...

  7. 一个神奇却很简单的css特效

    在网上看到一个前端大牛的主页,觉得他有一个特效特别酷,一开始还以为是要用什么javascript代码来实现,但仔细看一下,发觉只是用几行css代码就搞定了,我觉得挺好的. 他这个效果就是鼠标放在左半部 ...

  8. 2018-5-20-C#-BBcode-转-Markdown

    title author date CreateTime categories C# BBcode 转 Markdown lindexi 2018-05-20 14:58:57 +0800 2018- ...

  9. RESET - 把一个运行时参数值恢复为缺省值

    SYNOPSIS RESET name RESET ALL DESCRIPTION 描述 RESET 将运行时参数恢复为缺省值. RESET 是下面语句的一个变种 SET parameter TO D ...

  10. 脚本_监控 HTTP 服务器的状态

    #!bin/bash#功能:监控 HTTP 服务器的状态(测试返回码) #作者:liusingbon#设置变量,url 为你需要检测的目标网站的网址(IP 或域名)url=http://192.168 ...