zoukankan      html  css  js  c++  java
  • python 波波版压缩软件

    #压缩软件
    import os
    import zipfile
    import tkinter
    import tkinter.filedialog
    import tkinter.messagebox
    '''
    压缩
    1.选择文件按钮    目的:选择要压缩的文件
    2.选择文件夹按钮  目的:选择要压缩的文件夹
    3.压缩文件按钮    目的:选择压缩后的文件要存入的文件路径
     (这个文件要新建,还需要给他取一个帅气的名字)
    3.注意事项:要先选择文件或文件夹
    4.特点:压缩和解压两个操作是独立分开的
    
    解压
    1.选择文件按钮   目的:选择要解压的文件
    2.解压文件按钮   目的:选择解压后的文件要存入的文件夹路径
     (这个文件夹要新建,还需要给他取一个漂亮的名字)
    3.注意事项:在点击压缩文件按钮并压缩文件成功后
      不能立刻点击解压文件按钮,要先选择文件,即点击选择文件按钮
    4.优点:能够在对话框里面自主选择解压的文件和解压文件的目标文件夹
    5.缺点:不能在压缩文件后立即点击解压文件按钮
    6.特点:压缩和解压两个操作是独立分开的
    
    特点:
        压缩操作:选择文件和文件夹——>压缩文件
        解压操作:选择文件——>解压文件
    
    注意:bug很多 请不要联系本人
         张波微信:zb983978082
    '''
    
    class zipys:
        '''
        方法:
            界面布局
            选取文件
            压缩文件
            解压文件
            特点:
            压缩操作:选择文件——>压缩文件
            解压操作:选择文件——>解压文件
        '''
        def __init__(self):
    
            self.root = tkinter.Tk()
            self.root.minsize(490,400)
            self.root.title('波波版压缩软件')
            #声明label使用的变量
            self.filenames = tkinter.StringVar()
    
            #self.val1 = tkinter.StringVar()
    
            self.layout()
            self.files = ()
            self.root.mainloop()
        #选取文件 既可以选择要压缩的文件,又可以选择被解压的文件 最大特点是压缩和解压两个操作是独立分开的
        def selectfiles(self):
    
            #使用文件对话框  选择的即将要压缩/解压的文件全部存入files 组成一个元组  选择一个文件也是一个元组  方便以后压缩/解压操作使用
            self.files = tkinter.filedialog.askopenfilenames(title = '请选择压缩/解压的文件,压缩按住Ctrl可以多选')
            #打印选择的文件  看看他是什么类型
            print(self.files,type(self.files))
            #准备显示信息
            #临时的路径容器
    
            tmpfiles = []
            strvar1 = self.filenames.get()
            tmpfiles.append(strvar1)
    
            #遍历元组 进行路径的截取和省略操作
            for i in self.files:
                #判断路径字符个数是否超过指定的长度
                if len(i) >= 40:
                    i = i[:16] + '...' + i[-15:]
                #将处理之后的数据存入临时列表
                tmpfiles.append(i)
            #将所有文件路径组成字符串  写入label
            filestr = '
    '.join(tmpfiles)
            print(filestr,type(filestr))
            #将文件路径组成的字符串写入面板中
            self.filenames.set(filestr)
            #判断此刻面板中是否有文件
            if self.filenames.get() == '':
                tkinter.messagebox.showinfo(title='操作结果', message='您没有选择文件')
            else:
                # 提示用户选取文件成功  按open后的提示信息对话框
                tkinter.messagebox.showinfo(title='操作结果', message='选取文件成功:' + '在面板中')
    
        def selectdirs(self):
            #使用文件夹对话框  添加文件夹  获取的文件夹是一个字符串
            self.dirs = tkinter.filedialog.askdirectory(title = '请选择一个文件夹')
            #print(self.dirs,type(self.dirs))
            #获取原有面板中的内容(字符串)
    
            tmpfiles = []
            strvar2 = self.filenames.get()
            tmpfiles.append(strvar2)
    
            # 将处理之后的数据存入临时列表
            tmpfiles.append(self.dirs)
            # 将所有文件路径组成字符串  写入label
            filestr = '
    '.join(tmpfiles)
            print(filestr, type(filestr))
            # 将文件路径组成的字符串写入面板中
            self.filenames.set(filestr)
            # 判断此刻面板中是否有文件
            if self.filenames.get() == '':
                tkinter.messagebox.showinfo(title='操作结果', message='您没有选择文件')
            else:
                # 提示用户选取文件成功  按open后的提示信息对话框
                tkinter.messagebox.showinfo(title='操作结果', message='选取文件夹成功:' + '在面板中')
    
    
    
        #压缩文件函数
        '''
           以下压缩操作必须要在选择压缩文件之后执行,把压缩的操作分成了两个按钮
           1.选择文件按钮   目的:选择要压缩的文件
           2.压缩文件按钮   目的:选择压缩后的文件要存入的文件路径(这个文件要新建,还需要给他取一个漂亮的名字)
           3.注意事项:要先选择文件,即点击选择文件按钮 
           4.特点:压缩和解压两个操作是独立分开的
           '''
        def zipfiles(self):
            try:
                #判断是否已选择文件
                if self.filenames.get() == '':
                    #弹出信息提示对话框
                    tkinter.messagebox.showwarning(title = '警告',message = '请添加要压缩的文件')
    
                else:
                    #之前选的文件要保存到一个目录(文件夹)  这一步的目的就是为了选择一个要保存到的位置
                    filename = tkinter.filedialog.asksaveasfilename(title = '指定保存压缩文件的位置,并在下面取一个帅气的名字',filetypes = (('zip文件','*.zip'),('所有文件','*.*')))
                    #self.filename 保存的一个文件路径  现在里面没有任何的东西  要在下面的写入之后才会有文件
                    print(filename)
                    #新建压缩文件
                    zp = zipfile.ZipFile(filename,'a')
                    #添加文件到压缩文件(遍历操作)
                    for onefile in self.files:
                        #括号里面第一个是要写入的文件的路径,第二个是你给她的命名,这里选取的是文件的最后一部分
                        zp.write(onefile,os.path.basename(onefile))
    
                    #关闭压缩文件
                    zp.close()
    
                    #提示用户压缩之后的压缩文件的路径
                    tkinter.messagebox.showinfo(title = '操作结果',message = '压缩成功:'+ filename)
            except:
                tkinter.messagebox.showinfo(title='提示', message='解压没有完成哦')
    
        #解压文件函数
        '''
        以下解压操作必须要在选择压缩文件之后执行,把解压文件分成了两个按钮
        1.选择文件按钮   目的:选择要解压的文件
        2.解压文件按钮   目的:选择解压后的文件要存入的文件夹路径(这个文件夹要新建,还需要给他取一个漂亮的名字)
        3.注意事项:在点击压缩文件按钮并压缩文件成功后不能立刻点击解压文件按钮,要先选择文件,即点击选择文件按钮
        4.优点:能够在对话框里面自主选择解压的文件和解压文件的目标文件
        5.缺点:不能在压缩文件后立即点击解压文件按钮
        6.特点:压缩和解压两个操作是独立分开的
        '''
        def extractfiles(self):
            try:
    
                # 判断是否已选择文件
                if self.filenames.get() == '':
                    # 弹出信息提示对话框
                    tkinter.messagebox.showwarning(title='警告', message='请添加要解压的文件')
                else:
    
                    #选择解压文件的目标路径  解压后的文件保存到一个文件夹中 这一步的目的就是选择这个文件夹
                    filename1 = tkinter.filedialog.asksaveasfilename(title = '指定保存解压后文件的位置,并在下面取一个漂亮的名字',filetypes = (('zip文件','*zip'),('所有文件','*.*')))
                    print(filename1)
                    #遍历之前选择的压缩文件,虽然只有一个元素,但是他是一个元组
                    for j in self.files:
                        #压缩文件是元组 要把它变成字符串 所以要遍历操作
                        #打开要解压的压缩文件
                        fp = zipfile.ZipFile(j,'r')
                        #解压全部文件  括号里面写入的是解压到的目标文件夹路径
                        fp.extractall(filename1)
                        #解压指定文件   括号里面第一个写入的是指定解压的文件名称,第二个写入的是解压到的目标文件夹路径
                        #fp.extract('calcultor.py',self.filename1)
                        #关闭要解压的压缩文件
                        fp.close()
    
                    #提示用户解压的文件的目标路径
                    tkinter.messagebox.showinfo(title='操作结果', message='解压成功到:' + filename1)
            except:
                tkinter.messagebox.showinfo(title='提示', message='解压没有完成哦')
    
        def clearfiles(self):
            #面板清空
            self.filenames.set('')
    
    
        def presshelp(self):
    
            self.val1 = tkinter.StringVar()
    
            newwindows = tkinter.Toplevel(bg = 'white')
            newwindows.title('压缩软件说明')
            newwindows.minsize(500,550)
    
            # 打开文件
            zp = open('./压缩软件说明.txt', 'r+')
            self.shuoming = zp.read()
            print(self.shuoming,type(self.shuoming))
    
            self.val1.set(self.shuoming)
    
            label = tkinter.Label(newwindows,bg = 'white',textvariable = self.val1,font = ('黑体',10),anchor = 'nw',justify = 'left')
            label.place(x = 10,y = 10)
    
    
        #====================================== 界面布局 ================================================================
        def layout(self):
        #====================================== 菜单 =====================================================================
            #添加菜单组件
    
            #创建总菜单
            allmenu = tkinter.Menu(self.root)
    
            #添加子菜单(帮助H)
            helpmenu = tkinter.Menu(allmenu,tearoff = 0)
            allmenu.add_cascade(label = '帮助H',menu = helpmenu)
    
            #添加选项卡
            helpmenu.add_command(label = '查看帮助',command = self.presshelp)
    
            #摆放菜单
            self.root.config(menu = allmenu)
    
    
        #============================================= 按钮 =============================================================
            #添加文件按钮
            btn1 = tkinter.Button(self.root,text = '选择文件',command = self.selectfiles)
            btn1.place(x = 15,y = 20,width = 80,height = 40)
    
            #添加文件夹按钮
            btn2 = tkinter.Button(self.root, text='选择文件夹', command=self.selectdirs)
            btn2.place(x=110, y=20, width=80, height=40)
    
            #压缩操作按钮
            btn3 = tkinter.Button(self.root,text = '压缩文件',command = self.zipfiles)
            btn3.place(x = 205,y = 20,width = 80,height = 40)
    
            #解压操作按钮
            btn4 = tkinter.Button(self.root,text = '解压文件',command = self.extractfiles)
            btn4.place(x = 300,y = 20,width = 80,height = 40)
    
            #清空操作按钮
            btn5 = tkinter.Button(self.root, text='清空文件', command= self.clearfiles)
            btn5.place(x= 395, y=20, width=80, height=40)
    
        #============================================= 标签 ========================================================
            #添加标签按钮
            label = tkinter.Label(self.root,bg = 'white',textvariable = self.filenames,anchor = 'nw',justify = 'left')
            label.place(x = 15,y = 80,width = 460,height = 300)
    
    
    ys = zipys()
    
  • 相关阅读:
    Spring security 浅谈用户验证机制
    Spring Boot Oauth2
    解决端口被占用问题
    Intellij idea run dashboard面板
    深入了解Vue组件 — Prop(上)
    深入了解Vue组件 — 组件注册
    使用命令行工具创建Vue项目
    Vue.js — 组件基础
    Vue.js — 表单输入绑定
    Vue.js — 事件处理
  • 原文地址:https://www.cnblogs.com/zhangboblogs/p/7901030.html
Copyright © 2011-2022 走看看