• 用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()

    五、完成效果图

  • 相关阅读:
    类型转换
    with语句用法
    微软工具下载网址
    第2章信息系统服务管理
    声明变量
    管理机中录入485总表的操作方法
    任务 uitableview uiscrollview uiresponder
    如何去掉UITableViewController中的分隔线setSeparatorStyle
    NSRunLoop 概述和原理
    使用 Notifications
  • 原文地址:https://www.cnblogs.com/sunshine-long/p/7903148.html
Copyright © 2020-2023  润新知