Python PyQt5如何实现文件拷贝器
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章将为大家详细讲解有关Python PyQt5如何实现文件拷贝器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。UI设置def ui_init(self):
千家信息网最后更新 2024年11月11日Python PyQt5如何实现文件拷贝器
这篇文章将为大家详细讲解有关Python PyQt5如何实现文件拷贝器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
UI设置
def ui_init(self): ''' 界面的函数 ''' self.setWindowTitle('拷贝器') self.resize(600,400) self.setMinimumSize(600,400) # 设置窗口的最小值 '''控件''' self.root_btn = QPushButton() self.copy_btn = QPushButton() self.start_btn = QPushButton() self.root_text = QTextBrowser() self.copy_text = QTextBrowser() self.log = QTextBrowser() self.h2_layout = QHBoxLayout() self.h3_layout = QHBoxLayout() self.h4_layout = QHBoxLayout() self.v_layout = QVBoxLayout() self.progerss =QProgressBar() self.finish_sound = QSound(':resource/finish.wav') # 设置提示音 '''控件设置''' self.root_btn.setText('选择文件夹') self.root_btn.setFixedSize(150,30) self.copy_btn.setText('选择拷贝路径') self.copy_btn.setFixedSize(150,30) self.start_btn.setText('开始') self.start_btn.setFixedSize(50,30) self.root_text.setFixedHeight(27) self.copy_text.setFixedHeight(27) self.progerss.setValue(0) '''控件摆放''' self.h2_layout.addWidget(self.root_text) self.h2_layout.addWidget(self.root_btn) self.h3_layout.addWidget(self.copy_text) self.h3_layout.addWidget(self.copy_btn) self.h4_layout.addWidget(self.progerss) self.h4_layout.addWidget(self.start_btn) self.v_layout.addLayout(self.h2_layout) self.v_layout.addLayout(self.h3_layout) self.v_layout.addWidget(self.log) self.v_layout.addLayout(self.h4_layout) self.setLayout(self.v_layout)
这次加入了一个完成的音效
QSound解析文件时,可能会出现这问题
QSoundEffect(qaudio): Error decoding source
self.finish_sound = QSound('resource/finish.wav') # 设置提示音
原来这这样写的,但会出现上面的问题,就在写一个qrc文件,再将qrc文件转成py文件,再引入这个py文件,这样就可以使用了。在使用这个音频只需要在路径上加一个 :
,就如这样self.finish_sound = QSound(':resource/finish.wav') # 设置提示音
qrc文件转py文件
先新建一个txt文件,在向里面写入这样的语句:
resource/finish.wav
resource/
是放音频的文件夹名finish.wav
是音频名resource/finish.wav
是完整音频路径
接着将文件后缀改为qrc,在利用cmd命令窗中键入pyrcc5 -o resource.qrc resource.py
,将.qrc文件转成.py文件。
主要逻辑
def variates_init(self): ''' 储存变量的函数 ''' self.root_path = '' # 要拷贝的路径 self.copy_path = '' # 要拷贝到的路径 self.file_list = [] # 文件名集合 self.len = 0 # 文件夹下文件数量def copy_file(self): ''' 拷贝文件的函数 ''' count = 0 # 临时设置进度条数值 self.progerss.setRange(0,self.len) # 设置进度条的数值 self.progerss.setValue(0) # 设置进度条初始值 '''拷贝器主逻辑''' for file in self.file_list: root_path = self.root_path + "/" + file copy_path = self.copy_path + "/" + file with open(root_path, "rb") as root_file: with open(copy_path, "wb") as copy_file: while True: data = root_file.read(1024) if data: copy_file.write(data) else: count += 1 self.progerss.setValue(count) break def dir_file(self): ''' 遍历目录的函数 ''' filelist = os.listdir(self.root_path) self.file_list = filelist def len_file(self): ''' 文件数量的函数 ''' self.len=len(self.file_list)
拷贝器的逻辑:
从文件名集合中获取文件名
合并出原始文件路径和拷贝到的路径
根据原始文件路径打开文件模式为只读,根据拷贝到的路径新建一个文件写入
拷贝的文件每次写入1024字节,当没有数据后,就结束写入并保存文件,进度条数值加1
信号与槽
def connect_init(self): ''' 信号与槽连接的函数 ''' self.root_btn.clicked.connect(lambda:self.btn_slot()) self.copy_btn.clicked.connect(lambda:self.btn_slot()) self.start_btn.clicked.connect(self.start_slot) def start_slot(self): ''' 开始按键的槽函数 ''' self.root_btn.setEnabled(False) self.copy_btn.setEnabled(False) self.start_btn.setEnabled(False) self.dir_file() # 遍历指定文件夹下的文件并添加到self.file_list集合中 self.len_file() # 获取文件夹下文件数量 self.copy_file() # 开始拷贝文件 self.log.append('拷贝成功!') self.finish_sound.play() # 播放完成后的提示音 def btn_slot(self): ''' 上面两个按键的槽函数 ''' btn = self.sender() if btn == self.root_btn: directory = QFileDialog.getExistingDirectory(None,"选取文件夹","C:/") if directory: self.root_text.setText(directory) self.root_path = directory self.log.append('选择文件成功!') elif btn == self.copy_btn: directory = QFileDialog.getExistingDirectory(None,"选取拷贝位置","C:/") if directory: self.copy_text.setText(directory) self.copy_path = directory self.log.append('选取拷贝位置成功!')
成果展示
关于"Python PyQt5如何实现文件拷贝器"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
文件
拷贝
路径
函数
文件夹
进度
音频
提示
成功
控件
数值
数量
文件名
篇文章
逻辑
选择
原始
位置
信号
按键
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖南服务器机柜多少钱
苏州阿里云服务器排名
软件开发有什么消耗品
川大电气学院数据库技术
高速公路的网络安全
pyodbc批量写入数据库
第三方单位网络安全责任书
vs根据数据库生成属性
人员组织架构数据库设计
苹果用什么数据库
网络安全产品交付项目
杭州正规软件开发大概要多少钱
计算机中网络服务器配置方式
轻量化集群数据库
遥感与软件开发
甘蔗栽培种数据库
惠普服务器管理口怎么登录
苏州品牌网络技术哪家好
计算机网络技术基本内容
db2创建新数据库sql
ddos服务器防护工具
工控上位机如个软件开发方便
网络安全法由谁实施
阜阳市网络安全方案
学科网数据库开通
守望先锋游戏服务器错误
安徽软件开发者公司
以后是网络社会 网络安全谁去做
数据库系统管理员工作标准
五一假期网络安全提醒