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

一、软件描述

用Python tkinter模块写一款属于自己的压缩软件。zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile来操作zip文件,具有功能:zip压缩功能,zip解压功能。(功能较少,比较low,大神勿喷。)

二、所需知识点

  • 函数的运用
  • 全局变量的运用
  • tkinter模块
  • zip模块

三、程序实现流程分析

  1. 用tkinter模块创建一个压缩软件界面,主要用到界面功能,按钮功能(打开软件,压缩文件,解压文件),标签(路径显示对话框)
  2. 定义三个函数,打开文件函数,压缩文件函数,加压文件函数。分别与‘打开文件’按钮,‘压缩文件’ 按钮, ‘解压文件’  按钮绑定
  3. 给函数中添加功能

四、代码如下

  1 import tkinter
  2 import tkinter.filedialog
  3 import os
  4 import zipfile
  5 import tkinter.messagebox
  6 
  7 #创建住窗口
  8 root = tkinter.Tk()
  9 root.minsize(700,500)
 10 root.title('李蛟龙的压缩软件')
 11 root['bg'] = '#303030'
 12 
 13 
 14 
 15 
 16 #声明一个全局变量files
 17 files = ()
 18 #声明lable的使用变量
 19 filenames = tkinter.StringVar()
 20 #1.选取文件操作
 21 def selecfiles():
 22     #声明全局变量
 23     global files
 24     #使用文件对话框选择文件
 25     files = tkinter.filedialog.askopenfilenames(title = '选择你要要做的软件bitch')
 26     #显示选中文件的信息
 27     #临时的路径容器
 28     tmpfiles = []
 29     for i in files:
 30         if len(i) > 60:
 31             i = i[0:20] + '...' + i[-15:]
 32         tmpfiles.append(i)
 33     filestr = '
'.join(tmpfiles)
 34     print(filestr)
 35     filenames.set(filestr)                                    #在标签中显示文件名称
 36 
 37 
 38 
 39 
 40 #2.压缩文件函数
 41 def zipfiles():
 42     global files
 43     #获取压缩文件的路径
 44     filename = tkinter.filedialog.asksaveasfilename(title = '保存文件',filetypes = (('zip 文件','*.zip'),('所有文件','*.*')))
 45     #新建压缩文件
 46     zp = zipfile.ZipFile(filename +'.zip','a')              #压缩文件默认zip格式
 47     #添加要压缩的文件(遍历操作
 48     for onefiles in files:
 49         zp.write(onefiles,os.path.basename(onefiles))
 50     zp.close()#创建完成
 51     #提示用户压缩路径
 52     tkinter.messagebox.showinfo(title = '操作结果',message = '压缩成功:' + filename)
 53 
 54 
 55 
 56 
 57 #3.解压操作函数
 58 def uncompress():
 59     global files
 60 
 61     # 使用文件对话框选择文件
 62     files = tkinter.filedialog.askopenfilenames(title='选择你要要做的软件bitch')
 63     # 显示选中文件的信息
 64     # 临时的路径容器
 65     tmpfiles = []
 66     for i in files:
 67         if len(i) > 60:
 68             i = i[0:20] + '...' + i[-15:]
 69         tmpfiles.append(i)
 70     filestr = '
'.join(tmpfiles)
 71     print(filestr)
 72     filenames.set(filestr)
 73 
 74 
 75     zp = zipfile.ZipFile(filestr, 'r')
 76     # 添加要压缩的文件(遍历操作
 77     #for onefiles in files:
 78     files1 = tkinter.filedialog.askdirectory(title = '选择您要解压的路径')
 79     zp.extractall(files1)
 80     zp.close()  # 解压完成
 81     #提示用户压缩路径
 82     tkinter.messagebox.showinfo(title = '操作结果',message = '解压成功:'+ files1)
 83 
 84 
 85 
 86 
 87 
 88 
 89 
 90 
 91 #界面布局
 92 #菜单栏
 93 allmenu = tkinter.Menu(root,bg = 'black')
 94 
 95 filmenu = tkinter.Menu(allmenu,tearoff = 0)
 96 filmenu.add_command(label = '打开')
 97 filmenu.add_command(label = '保存')
 98 filmenu.add_separator()
 99 filmenu.add_command(label = '设置')
100 filmenu.add_command(label = '退出')
101 
102 filmenu1 = tkinter.Menu(allmenu,tearoff = 0)
103 filmenu1.add_command(label = '打开')
104 filmenu1.add_command(label = '保存')
105 filmenu1.add_separator()
106 filmenu1.add_command(label = '设置')
107 filmenu1.add_command(label = '退出')
108 
109 
110 
111 allmenu.add_cascade(label = '文件',menu = filmenu)
112 allmenu.add_cascade(label = '编辑',menu = filmenu1)
113 allmenu.add_cascade(label = '工具')
114 
115 root.config(menu = allmenu,bg = 'black')
116 
117 
118 #添加按钮界面
119 label = tkinter.Label(root,bg = '#242424')
120 label.place(width = 700,height = 115)
121 #1.添加文件按钮
122 btnadd = tkinter.Button(root,text = '选择文件',bg = '#242424',bd = 0.5,fg = 'grey',command = selecfiles)
123 btnadd.place(x = 100,y = 70,width = '80',height = 30)
124 #2.压缩操作按钮
125 btnadd = tkinter.Button(root,text = '压缩文件',bg = '#242424',bd = 0.5,fg = 'grey',command = zipfiles)
126 btnadd.place(x = 300,y = 70,width = '80',height = 30)
127 #3.解压操作按钮
128 btnadd = tkinter.Button(root,text = '解压文件',bg = '#242424',bd = 0.5,fg = 'grey',command = uncompress)
129 btnadd.place(x = 500,y = 70,width = '80',height = 30)
130 
131 img1 = tkinter.PhotoImage(file = '1.gif')
132 labelg1 = tkinter.Label(root,image = img1)
133 labelg1.place(x = 115,y =15,width = 50,height = 50)
134 
135 img2 = tkinter.PhotoImage(file = '2.gif')
136 labelg2 = tkinter.Label(root,image = img2)
137 labelg2.place(x = 317,y =15,width = 50,height = 50)
138 
139 img3 = tkinter.PhotoImage(file = '1.gif')
140 labelg3 = tkinter.Label(root,image = img1)
141 labelg3.place(x = 515,y =15,width = 50,height = 50)
142 
143 
144 #4显示信息的组件
145 label = tkinter.Label(root,bg = '#F2F2F2',textvariable = filenames,anchor = 'nw',justify = 'left')
146 label.place(x= 5,y = 115,width = '690',height = '370')
147 
148 
149 root.mainloop()

五、完成效果图

原文地址:https://www.cnblogs.com/sunshine-long/p/7903148.html