【QT】progressBar的使用(13)

progressBar多用于记录程序运行的时间、文件下载的时间等等,今天就来看一下,如何熟练运用progressBar。

一.环境配置

1.python 3.7.8  

可直接进入官网下载安装:Download Python | Python.org

2.QT Designer 

官方下载路径:Qt Designer Download for Windows and Mac

二.实例演示

1. 这边为了方便,直接用Qt Designer 来设计串口界面的布局,如下:
【QT】progressBar的使用(13)_第1张图片

 (1)该界面设计的是一个Linux文件传输功能界面,那么我们从最基础的progressBar来说,怎样让他在版本传输、下载的时候,进度条显示出来让我们清晰可见进度执行情况。

2. progressBar函数的基本操作:

​
self.progressBar.setMinimum(0)

self.progressBar.setMaximum(100)

self.progressBar.setValue(i)

​

上面三个函数的作用,我们先用英文理解一下,如下:

(1)progressBar.setMinimum(0)  :  进度条.设置最小值(0)

(2)progressBar.setMaximum(100)  : 进度条.设置最大值(100)

(3)progressBar.setValue(i)  :进度条.设置值(i)

这样去理解函数是不是轻松多了,但不是每个函数功能都能这样去理解奥,确实,如上这三个函数的功能是(1.设置进度条的最小值   2.设置进度条的最大值   3.设置进度条的值)。

2.1  progressBar运行程序:

已知上面三个函数的功能,再加入一个循环是不是就能让progressBar运行起来了呢?

​
for i in range(101):
            time.sleep(1)
            self.progressBar.setValue(i)  # 发送进度条的值 信号

​

 这样通过简单的循环,确实能让我们的进度条运行起来,但怎样结合程序运用起来呢,看一个文件传输、下载的例子,来更深入的了解一下。

3.  编辑Qt Designer生成的.py文件:

(1)如果想要保持文件下载和UI界面progressBar同步执行更新,我们这边加入多线程:

self.threading_1 = Worker()
self.threading_1.progressBarValue.connect(self.copy_file)

 

(2)进度条更新

def copy_file(self, i):
        self.progressBar.setValue(i)

(3)进度条执行主程序:

class Worker(QThread):

    progressBarValue = pyqtSignal(int)  # 更新进度条

    def __init__(self):
        super(Worker, self).__init__()


    def run(self):
        for i in range(101):
            time.sleep(1)
            self.progressBarValue.emit(i)  # 发送进度条的值 信号

根据我们的文件下载时长来定义时间,传输设置 progressBar的值。

(4)主程序main.py:

if __name__ == '__main__':

    app = QApplication(sys.argv)

    MainWindow = QMainWindow()
    ui = xxx.Ui_MainWindow()
    ui.setupUi(MainWindow)
    

    MainWindow.show()##显示
    test_one = threading.Thread(target=xxx)
    
    test_two = threading.Thread(target=xxx)

    sys.exit(app.exec_())##退出界面

 执行:

【QT】progressBar的使用(13)_第2张图片

 

当我们点击下载,多线程任务,文件在下载的同时更新progressBar的值。

 

三.总结

这边通过简单的程序来说明progressBar的使用方法,也欢迎大家互相交流学习。

@Neng

你可能感兴趣的:(QT,qt,python,threading)