Python PyQt5如何实现文件拷贝器
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章将为大家详细讲解有关Python PyQt5如何实现文件拷贝器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。UI设置def ui_init(self):
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
智慧充值无法连接服务器
硕士转软件开发
四平租房软件开发
网络技术5g
网络技术员最需要的工具
小学生网络安全进课堂
生物专业英文科技文献数据库
国税局开展网络安全宣传周活动
迷你世界怎么搬运服务器
简单的web连接数据库
哪个游戏服务器直接关闭了
万方数据库余额如何退款
串口服务器ip和端口怎么改
付队长软件开发裙
租服务器怎么找玩家
移动网络安全爱加密
pc服务器的外形有哪几种
公安部网络安全邹勇
订制开发软件开发
壹町美网络技术
centos8服务器配置ip
验证服务器时出现问题怎么回事
上海市网络安全态势感知
通信软件开发 简历模板
网络安全艺术字立体
佳云科技和互联网
调度网络安全防护的重要
vscode打开数据库
升旗视频软件开发
数据库技术及应用期末考试答案