实训之压缩软件

# 压缩文件

import tkinter
import tkinter.filedialog
import tkinter.messagebox
import zipfile
import os

class ZipDemo:
def __init__(self):
self.root = tkinter.Tk()
self.root.minsize(300, 400)
self.root.title(‘chy压缩软件‘)
self.showLabel()
self.root.mainloop()
self.files = ()
self.root.resizable(width = False, height = False)

# 添加文件
def selectFiles(self):
# 全局变量
global files
self.files = tkinter.filedialog.askopenfilenames(title=‘请选择要压缩的文件‘)
print(self.files)
# 临时路径
self.tmpfiles = []
# 遍历元祖 进行路径的截取
for i in self.files:
# 判断路径字符个数是否超过长度
if len(i) >= 40:
i = i[0:15] + ‘...‘ + i[-15:]
# 将处理之后的数据存入临时列表
self.tmpfiles.append(i)

# 将所有文件路径组成字符串 写入label
filestr = ‘\n‘.join(self.tmpfiles)
print(filestr)
self.filenames.set(filestr)

# 压缩文件
def zipFiles(self):
# 全局声明
global files
# 获取压缩文件路径
self.filename = tkinter.filedialog.asksaveasfilename(title=‘请选择压缩路径‘,filetypes=((‘zip 文件‘, ‘*.zip‘), (‘doc 文件‘, ‘*.doc‘)))
# 新建压缩文件
self.zp = zipfile.ZipFile(self.filename,‘a‘)
# 遍历文件信息
for onefile in self.files:
self.zp.write(onefile, os.path.basename(onefile))
# 关闭压缩文件
self.zp.close()
# 提示用户压缩路径
tkinter.messagebox.showinfo(title = ‘操作结果‘,message=‘提示压缩成功:‘ + self.filename )

# 解压
def jyFiles(self):
# 选择压缩文件
jypath = tkinter.filedialog.askopenfilename(title=‘选择解压文件‘, filetypes=[(‘zip 文件‘, ‘*.zip‘)])
# 解压路径
zippath = tkinter.filedialog.askdirectory(title=‘选择解压路径‘)
print(zippath, type(zippath))
zf = zipfile.ZipFile(jypath, ‘r‘)
zf.extractall(zippath)
# 弹出提示框
tkinter.messagebox.showinfo(‘提示‘, ‘解压成功,解压路径:‘ + zippath)

# 界面布局
def showLabel(self):
# 添加文件按钮
btn1 = tkinter.Button(self.root, text=‘添加文件‘, fg=‘blue‘, command=self.selectFiles)
btn1.place(x=20, y=20, width=80, height=40)

# 添加压缩按钮
btn2 = tkinter.Button(self.root, text=‘压缩文件‘, fg=‘red‘, command=self.zipFiles)
btn2.place(x=110, y=20, width=80, height=40)

# 添加解压按钮
btn3 = tkinter.Button(self.root, text=‘解压文件‘, fg=‘black‘, command=self.jyFiles)
btn3.place(x=205, y=20, width=80, height=40)
# 声明label使用的变量
self.filenames = tkinter.StringVar()
self.filenames.set(‘当前没有文件‘)
# 显示信息的组建
label = tkinter.Label(self.root, bg=‘white‘, textvariable=self.filenames, justify=‘left‘, anchor=‘w‘)
label.place(x=15, y=80, width=270, height=300)

zip = ZipDemo()

时间: 2024-10-13 20:03:41

实训之压缩软件的相关文章

深圳软件培训-软件开发培训-汇道IT实训

"汇道"软件培训共开设16门课程:ios开发,android开发,java培训,深圳美工培训,深圳UI设计培训,php培训...时间从每周周一开始,至周五结束,共计5次课,每周的周末进行深圳软件培训免费试听(周六和周日),一节课的时长约为3个小时. 深圳软件培训招生 一.学习专业: 软件开发(安卓系统andriod运行软件.苹果系统ios运行软件) 服务器端(java语言)运行软件的开发,主要是网站开发. 二.招生目标: 招生方向培训班采用汇道教育人才培训方案,使用"汇道IT

数学软件实训1-MATLAB程序设计及应用初步

数学软件实训任务一 一 题目:MATLAB程序设计及应用初步 二 目的:掌握MATLAB程序设计的基本方法,会利用MATLAB程序设计思想编程处理一些简单问题. 三 要求: 1 掌握控制流的基本语法结构. 2 会应用for循环,while循环及分支语句if -else和switch-case等进行编程. 3 结合实际应用,会用基本语句进行简单的交叉编程. 四 实训内容:             1 MATLAB控制流语法结构及其意义 (1) 循环语句 for循环语句结构 for 循环变量=数组

数学软件实训2-MATLAB程序综合设计及应用

数学软件实训任务二 一 题目:MATLAB程序综合设计及应用 二 目的:熟练掌握MATLAB程序设计的基本方法,会根据MATLAB程序设计的 三 要求: 1 熟练掌握控制流的基本语法结构. 2 会熟练应用for循环,while循环及分支语句if -else和switch-case等进行混合编程,处理实际问题. 四 实训内容: 1 方程求根的二分法及程序设计 (1)方程求根的二分法的基本原理 取[a,b]的中点$\xi \displaystyle _{1}=\frac{a+b}{2}$,计算 $f

Lamp 实训小结

5.9到5.13学院组织了实训!经过五天实训我对自己未来的工作有了进一步的认识,很喜欢崔涛老师的课堂同时羡慕他的才华!哈哈哈,努力吧,我要比他还牛! 一.vi工具的使用 新建文本文件:vi file1.txt 1)按‘i’进入编辑模式 2)退出编辑模式按ESC, :wq表示保存退出 :q!表示不保存退出 3)cat file1 查看文件内容 4)查看行 74G 表示查看第74行,gg 表示跳转到第一行,G表示跳转到最后一行. 二.使用vi设置网络系统 1)进入相应路径更改ip:cd /etc/s

<实训|第二天>掌握linux6.7中安装vmware、vmware安装linux发行版本以及遇到的问题最后libreoffice的安装

期待已久的linux运维.oracle"培训班"终于开班了,我从已经开始长期四个半月的linux运维.oracle培训,每天白天我会好好学习,晚上回来我会努力更新教程,包括今天学到了什么知识点,用了什么方法,使用了什么工具,工具在哪里共享着等等,努力做到让每一位感兴趣的.关注我的.没关注我的老司机都能在自己闲暇的时光学到一点额外的知识,指不定那一天你就用上了少许呢! ------------------------------------------------------------

为期3个月的实训结束了,有感而发

今天是10月22日,早上刚刚结束项目答辩,作为组长的我第一个进会议室,我深吸一口气,淡定地走了进去,为我这几个月的成果做个总结汇报,那一刻我的心情是平静的,连接好投影仪,清清嗓子,我开始了自我介绍,然后就开始了我的答辩,老师的问题我都完整地回答了出来,也展示了我自己实现的有亮点的小功能,汇报完毕后,起身做了结束语,看着面试官老师们满意的微笑我的心里有了一丝欣慰与感动 这次做的项目是基于局域网的微博客户端,用到安卓开发,我负责整个项目的进度,这期间,我们小组一共5个人不停奋战,实现所有功能,也修改

实训之countdown深度优化

今天开始我们为期三周的实训,讲道理很紧张.我们两个多月的时间,小组成员磨合的非常好,可以说是有点默契的程度了,凝聚力明显提高.今天的分组之后立马投入这次实训中. 首先要确定我们这次实训目标,我们选择了继续强化我们的项目.在前段时间配合的不是很理想到通力合作做出粗略的基本功能的实现,我们每个人都付出了很多.这次我们希望继续深入下去这个项目,让它不再是一个简单的功能性软件,我们打算加入一些全新的功能点进去,让这个项目成为我们之前规划中小巧简便实用性高的产品. 首先我们希望加入登录注册,在使用过程中可

<实训|第三天>Linux登录界面的修改以及Richard Stallman、自由软件运动

在写博客之前我想说两点: 承认一个错误,昨天写的实训第二天,我把redhat6.7写成了Linux6.7,感谢热心人士的指出! 昨天写的文章名字太长了,今天改善,内容感觉表述不全,希望各位谅解! 官方跟我说的是安装配置类的文章不能放进首页中,今天虽然有一点,但是主体部分还是对GUN.Linux和TCP/IP以及IP的认识. 期待已久的linux运维.oracle"培训班"终于开班了,我从已经开始长期四个半月的linux运维.oracle培训,每天白天我会好好学习,晚上回来我会努力更新教

【CC2530入门教程-增强版】基础技能综合实训案例(基础版)-终端源码

[CC2530入门教程-增强版]基础技能综合实训案例(基础版)-终端源码 广东职业技术学院 欧浩源 一.关于硬件电路 关于这个综合实训案例,具体需求详见<[CC2530入门教程-增强版]基础技能综合实训案例(基础版)-题目需求>. 我自己实在"全国职业院校技能大赛--物联网技术应用赛项"的Zigbee模块上实现的.该模块的电路应该和TI公司官方评估板的推荐电路差不多,我想现在市面上很多开发板也是参考这样的电路设计,只要您使用的开发板上有LED灯.按键输入.串口输出和一路A/