#压缩软件
#导入所需模块,设置界面
import os
import zipfile
import tkinter
import tkinter.messagebox
import tkinter.filedialog
root = tkinter.Tk()
root.title('我的压缩软件')
root.minsize(300,400)
#设置需要压缩文件的路径变量
filenames = []
#添加文件的函数
def addfiles():
#全局化变量
global filenames
#弹出文件选择对话框,选择需要添加的文件
files = tkinter.filedialog.askopenfilenames()
#将选择的文件添加到列表filenames中
filenames += list(files)
#将列表中的数据连接成字符串
strs = '\n'.join(filenames)
#将需要压缩文件的路径写入标签中显示
label['text'] = strs
#判断是否添加了文件,显示添加文件的个数
global num
num = strs.count('\n') + 1
if filenames == []:
tkinter.messagebox.showinfo(title='提示信息', message='您好,您还未添加任何文件')
else:
tkinter.messagebox.showinfo(title='提示信息', message='您好,您共添加了{}个文件'.format(num))
#压缩文件的函数
def zip_files():
#创建压缩文件的目录变量
global path
path = './myzip.zip'
#提示是否需要对当前文件进行压缩
result = tkinter.messagebox.askokcancel(title='提示信息', message='是否需要对当前{}个文件进行压缩?'.format(num))
#根据用户选择是否需要创建压缩文件
if result == True:
# 创建压缩文件
zp = zipfile.ZipFile(path, 'w')
# 向压缩文件中添加文件内容
#遍历添加文件的列表
for file in filenames:
global dir
dir = os.path.basename(file)
zp.write(file,dir)
# 关闭压缩文件
zp.close()
#判断压缩文件是否创建成功
if os.path.exists(path):
tkinter.messagebox.showinfo(title = '提示信息',message = '压缩文件创建成功!!!\n目录为:'+ path)
else:
tkinter.messagebox.showerror(title = '错误信息',message = '压缩文件创建失败!!!')
#解压文件的函数
def unzip_files():
try:
# 选择解压文件夹
tkinter.messagebox.showinfo(title='提示信息', message='请选择选择解压文件!!!')
unzipfile = tkinter.filedialog.askopenfilename()
#提示用户是否解压当前文件
result = tkinter.messagebox.askokcancel(title='提示信息', message='是否需要对当文件进行解压?')
if result == True:
# 选择解压的路径
tkinter.messagebox.showinfo(title='提示信息', message='请选择选择解压路径!!!')
unzippath = tkinter.filedialog.askdirectory()
# 打开解压文件夹
unzp = zipfile.ZipFile(unzipfile)
# 解压所有文件
unzp.extractall(unzippath)
# 关闭压缩文件
unzp.close()
tkinter.messagebox.showinfo(title='提示信息', message='解压文件成功!!!')
else:
tkinter.messagebox.showinfo(title='提示信息', message='您已取消解压,\n解压文件失败!!!')
# 判断解压是否成功
except:
tkinter.messagebox.showerror(title='错误信息', message='系统程序错误,\n解压文件失败!!!')
#摆放按钮组件
btn_add = tkinter.Button(root,text = '添加文件',command = addfiles)
btn_add.place(x = 10,y = 20 )
btn_zip = tkinter.Button(root,text = '压缩文件',command = zip_files)
btn_zip.place(x = 110,y = 20)
btn_unzip = tkinter.Button(root,text = '解压文件',command = unzip_files)
btn_unzip.place(x = 210,y = 20)
#显示信息区域
label = tkinter.Label(root,text = '暂时没有文件信息',bg = 'white',anchor = 'nw',justify = 'left')
label.place(x = 10,y = 70 ,width = 280,height = 300)
root.mainloop()