实例
创建基于Dialog without Buttons模板窗口 添加Label,Process Bar各两个 设定Label的text为Downloading the file和Scanning for Virus 设定Process Bar的objectName为progressBarFileDownload和progressBarVirusScan 设定Process Bar的默认值为0 保存为demoTwoProgressBarsLocks.ui 使用pyuic生成demoTwoProgressBarsLocks.py 创建callProgressBarTwoThreadsLocks.py,代码如下
import sys
import threading
import time
from PyQt5.QtWidgets import QDialog,QApplication
from cookbook_200503.demoTwoProgressBarsLocks import *
class MyForm(QDialog):
def __init__(self):
super().__init__()
self.ui=Ui_Dialog()
self.ui.setupUi(self)
self.show()
class myThread(threading.Thread):
counter=0
def __init__(self,w,ProgressBar):
threading.Thread.__init__(self)
self.w=w
self.counter=0
self.progressBar=ProgressBar
def run(self):
print("Starting "+self.name+"n")
threadLock.acquire()
while self.counter<=100:
time.sleep(1)
self.progressBar.setValue(self.counter)
self.counter+=10
print("Exiting " + self.name + "n")
threadLock.release()
if __name__=="__main__":
app=QApplication(sys.argv)
w=MyForm()
thread1=myThread(w,w.ui.progressBarFileDownload)
thread2=myThread(w,w.ui.progressBarVirusScan)
threadLock=threading.Lock()
threads=[]
thread1.start()
thread2.start()
w.exec()
threads.append(thread1)
threads.append(thread2)
for t in threads:
t.join()
sys.exit(app.exec())