python3打造专属的压缩软件

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') 
    # 将数据导入刚创建的压缩文件中
    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()

本文代码较多,相关函数的注释在文中已有注释(博主较懒),有不懂的小伙伴可以私信或评论直接问博主,喜欢博主的可以关注我哦,我是活动的笑脸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值