progressBar多用于记录程序运行的时间、文件下载的时间等等,今天就来看一下,如何熟练运用progressBar。
1.python 3.7.8
可直接进入官网下载安装:Download Python | Python.org
2.QT Designer
官方下载路径:Qt Designer Download for Windows and Mac
1. 这边为了方便,直接用Qt Designer 来设计串口界面的布局,如下:
(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_())##退出界面
执行:
当我们点击下载,多线程任务,文件在下载的同时更新progressBar的值。
这边通过简单的程序来说明progressBar的使用方法,也欢迎大家互相交流学习。
@Neng