范例 - 打开并压缩文件
这篇教学会运用“点击按钮打开多个文件”以及“压缩文件 zipfile”文章,实际制作出一个简单的界面,在界面里可以选择多个文件后,将多个文件压缩成为一个压缩档的功能。
因为 Google Colab 不支援 tkinter,所以请使用本机环境 ( 参考:使用 Python 虚拟环境 ) 或使用 Anaconda Jupyter 进行实作 ( 参考:使用 Anaconda )。
编辑版面
使用 gird() 方法编辑版面,在画面的上方加入两个按钮,一颗按钮为加入文件,另一颗是压缩文件,接着在下方加入一个 Text 多行输入框,负责显示打开后的文件路径。
import tkinter as tk
from tkinter import Variable, filedialog
import zipfile
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('400x200')
btn_open = tk.Button(root,
text='加入檔案',
font=('Arial',14),
)
btn_open.grid(column=0, row=0) # 加入檔案按鈕,放在左上角
btn_zip = tk.Button(root,
text='壓縮檔案',
font=('Arial',14),
)
btn_zip.grid(column=1, row=0) # 壓縮檔案按鈕,放在右上角
text = tk.Text(root, height=8, width=50) # 多行輸入框,放在下方
text.grid(column=0, row=1, columnspan=2)
root.mainloop()
加入点击按钮程序
版面编辑完成后,定义两个函数 show() 和 zip(),分别处理打开并显示文件,以及压缩文件,再将其与两颗按钮绑定,完成后就可以加入文件并且压缩所加入的文件,此外这种做法也可以在打开文件后,再从 Text 移除所加入的文件,进行简单的调整。
import tkinter as tk
from tkinter import Variable, filedialog
import zipfile
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('400x200')
# 開啟檔案函式
def show():
files = filedialog.askopenfilenames()
for i, e in enumerate(files):
text.insert('end', f'{e}\n') # 如果不是最後一筆,加上換行符
if i == len(files):
text.insert('end') # 如果是最後一筆,不要換行
def zip():
content = text.get(1.0,'end-1c') # 取得文字輸入框內容,使用 end-1c 不要取得最後換行
new_files = content.split('\n') # 從換行符進行換行
del new_files[-1] # 刪除最後一筆空資料
print(new_files)
with zipfile.ZipFile('test.zip', mode='w') as zf:
for i in new_files:
zf.write(i) #壓縮檔案
btn_open = tk.Button(root,
text='加入檔案',
font=('Arial',14),
command=show
)
btn_open.grid(column=0, row=0)
btn_zip = tk.Button(root,
text='壓縮檔案',
font=('Arial',14),
command=zip
)
btn_zip.grid(column=1, row=0)
text = tk.Text(root, height=8, width=50)
text.grid(column=0, row=1, columnspan=2)
root.mainloop()
微信扫码关注
抖音扫码关注