python3打造专属的压缩软件
程序员文章站
2022-04-25 20:22:29
...
python3可以利用其自带的GUI库打造许多有用的应用软件,本文将使用python3的tkinter库来打造自己专属的压缩小软件。
本文的成品图片:
首先导入相关的模块:
import os
import zipfile
import tkinter.filedialog
from tkinter import *
from tkinter import scrolledtext
接着再设置相关的变量:
# 设置全局变量
data = ()
li_list = ["选择文件" , "压缩文件" , "解压文件"]
编写选择文件的函数:
# 选取文件的操作
def get_xuan():
global data
# 使用文件对话框选择文件
# filedialog.askopenfilenames可以返回多个文件名
data = tkinter.filedialog.askopenfilenames(title = "选择文件")
# print(type(data),data)
tmp = []
for i in data:
tmp.append(i)
# print(tmp , type(tmp))
# exit()
qian = "选择的文件有:" + "\n"
# 返回通过指定字符连接序列中元素后生成的新字符串。
file_xian = qian + '\n'.join(tmp) + "\n"
# print(file_xian , type(file_xian))
scr.delete(0.0 , END)
scr.insert(END ,file_xian )
编写压缩文件的函数:
# 压缩文件的操作
def get_ya():
global data
if v.get() == 1:
# 获取压缩文件的路径
ya_name = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('zip 文件', '*.zip'), ('所有文件', '*.*')))
# 创建压缩文件
ya_wen = zipfile.ZipFile(ya_name + '.zip', 'a') # 压缩文件默认zip格式
elif v.get() == 2:
# 获取压缩文件的路径
ya_name = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=(('rar 文件', '*.rar'), ('所有文件', '*.*')))
# 创建压缩文件
ya_wen = zipfile.ZipFile(ya_name + '.rar', 'a') # 压缩文件默认rar格式
elif v.get() == 3:
# 获取压缩文件的路径
xuan_name = str(entry.get()) + ' 文件'
kuo = "*." + str(entry.get())
ya_name = tkinter.filedialog.asksaveasfilename(title='保存文件', filetypes=((xuan_name, kuo), ('所有文件', '*.*')))
# 创建压缩文件
ya_wen = zipfile.ZipFile(ya_name + '.' + str(entry.get()), 'a') # 压缩文件默认rar格式
# 将数据导入刚创建的压缩文件中
for i in data:
# write(文件数据 , 文件名)
# os.path.basename 返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。
ya_wen.write( i , os.path.basename(i))
# 写入完就关闭操作
ya_wen.close()
wen = "\n" + "文件压缩完成" + "\n"
scr.insert(END, wen)
编写解压文件的函数:
# 解压文件的操作
def get_jie():
# 选择目标文件 ,tkinter.filedialog.askopenfilenames 选择打开多个文件,以元组形式返回多个文件名
jie_name = tkinter.filedialog.askopenfilenames(title = "选择压缩文件")
# 储存容器
tmp = []
for i in jie_name:
tmp.append(i)
qian = "选择的文件有:" + "\n"
# 返回通过指定字符连接序列中元素后生成的新字符串。
file_jie = '\n'.join(tmp)
# print(file_jie)
# 选择目标文件后进行读取
file_read = zipfile.ZipFile(file_jie , "r")
# print(file_read)
# 选择解压后的路径
file_lu = tkinter.filedialog.askdirectory(title = "选择解压的目录")
# 将文件放入解压目录中
file_read.extractall(file_lu)
# 关闭进程
file_read.close()
wen = "\n" + "文件解压完成" + "\n"
scr.insert(END, wen)
最后编写相关的GUI界面模块:
# 创建住窗口
window = Tk()
# 调节窗口的大小和位置
window.geometry('720x490+360+100')
# GUI界面的名字
window.title('博主的压缩软件')
# GUI界面的背景颜色
window['bg'] = '#303030'
button1 = Button(window,text = li_list[0],font=("隶书",25),bg = 'Snow',activeforeground = 'gold',activebackground = 'green' ,command = get_xuan)
button1.place(x=40 , y=100)
button2 = Button(window,text = li_list[1],font=("隶书",25),bg = 'Snow',activeforeground = 'gold',activebackground = 'green' ,command = get_ya)
button2.place(x=270 , y=100)
button3 = Button(window,text = li_list[2],font=("隶书",25),bg = 'Snow',activeforeground = 'gold',activebackground = 'green' ,command = get_jie)
button3.place(x=500 , y=100)
v = IntVar()
v.set(1)
button4 = tkinter.Radiobutton(window, text='压缩格式为: zip', font=("隶书", 20), bg='white', variable=v,
activeforeground='gold', activebackground='green', value=1 )
button4.place(x=40, y=5)
button5 = tkinter.Radiobutton(window , text='压缩格式为: rar', font=("隶书", 20), bg='white', variable=v,
activeforeground='gold', activebackground='green', value=2 )
button5.place(x=40, y=50)
button6 = tkinter.Radiobutton(window , text='其他压缩格式为:', font=("隶书", 20), bg='white', variable=v,
activeforeground='gold', activebackground='green', value=3 )
button6.place(x=380, y=8)
entry = Entry(window, font=('微软雅黑', 20), width=15)
entry.place(x=380, y=50)
scr = scrolledtext.ScrolledText(window, font=('微软雅黑', 15), width=57, height=12 , fg = "blue")
scr.place(x=10, y=170)
scr.insert(END , "准备就绪")
# 循环显示
window.mainloop()
本文代码较多,相关函数的注释在文中已有注释(博主较懒),有不懂的小伙伴可以私信或评论直接问博主,喜欢博主的可以关注我哦,我是活动的笑脸。