用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 = '\n'.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 = '\n'.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()

 

 

五、完成效果圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM