如何用pyqt5的Qprogressbar控件做一个显示脚本运行进度的进度条?

想用pyqt5做一个显示脚本运行的进度条,但是不知道如何写代码才能触发qprogressbar控件的信号槽监测到我的这个脚本

我的脚本文件:
import os,sys

def file_calcuation3(file3):
for foldername in os.listdir(file3):
print(foldername)
old_file_name = foldername
newname = foldername.replace('1_', '')
print(newname)
new_file_name = newname
os.rename(file3+'/' + old_file_name,file3+'/' + new_file_name)

上网查大都数案例都是下面这种,请问我该如何进行代码编写,才能让Qprogressbar控件知道我的脚本运行结果,实现我的脚本文件的进度显示
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QProgressBar
from PyQt5.QtCore import QBasicTimer
class MyClass(QWidget):
definit(self):
super().init()
self.initUI()
def initUI(self):
self.resize(300, 200)

载入进度条控件

self.pgb = QProgressBar(self)
self.pgb.move(50, 50)
self.pgb.resize(250, 20)
self.pv = 0
self.timer1 = QBasicTimer()
self.pgb.setMinimum(0)
self.pgb.setMaximum(100)
self.pgb.setValue(self.pv)
self.btn = QPushButton("开始", self)
self.btn.move(50, 100)
self.btn.clicked.connect(self.myTimerState)
self.show()
def myTimerState(self):
if self.timer1.isActive():
self.timer1.stop()
self.btn.setText("开始")
else:
self.timer1.start(100, self)
self.btn.setText("停止")
def timerEvent(self, e):
if self.pv == 100:
self.timer1.stop()
self.btn.setText("完成")
else:
self.pv += 1
self.pgb.setValue(self.pv)

if name == "main":
app = QApplication(sys.argv)
mc = MyClass()
app.exec_()


import os
import sys

from PyQt5.QtCore import QBasicTimer
from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QProgressBar
from threading import Thread

class MyClass(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    
    def initUI(self):
        self.resize(300,200)
        self.pgb = QProgressBar(self)
        self.pgb.move(50,50)
        self.pgb.resize(250,20)
        self.pv = 0
        # self.timer1 = QBasicTimer()
        self.pgb.setMinimum(0)
        self.pgb.setMaximum(100)
        self.pgb.setValue(self.pv)
        self.btn = QPushButton("开始",self)
        self.btn.move(50,100)
        self.btn.clicked.connect(self.myTimerState)
        self.show()
    
    def myTimerState(self):
        # if self.timer1.isActive():
        #     self.timer1.stop()
        #     self.btn.setText("开始")
        # else:
        #     # self.timer1.start(100,self)
        #     self.btn.setText("停止")
        if self.btn.text()=="开始":
            self.pgb.setValue(0)
            self.btn.setText("停止")
            # 启动脚本
            filefath=r"G:\迅雷下载"
            Thread(target = self.file_calcuation3,args = (filefath,)).start()
            # self.file_calcuation3(filefath)
        else:
            self.btn.setText("开始")
            
    def timerEvent(self,e):
        if self.pv == 100:
            self.timer1.stop()
            self.btn.setText("完成")
        else:
            self.pv += 1
            self.pgb.setValue(self.pv)

    def file_calcuation3(self,file3):
        templist=os.listdir(file3)
        # 获取进度总量
        total=len(templist)
        for i in range(total):
            foldername=templist[i]
            print(foldername)
            old_file_name = foldername
            newname = foldername.replace('_01','')
            print(newname)
            new_file_name = newname
            os.rename(file3 + '/' + old_file_name,file3 + '/' + new_file_name)
            self.pv=int(round((i+1)/total*100,0))
            print(self.pv)
            self.pgb.setValue(self.pv)
        print('任务完成')
        self.btn.setText("开始")


if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    mc = MyClass()
    app.exec_()

有帮助请采纳,谢谢

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632