1 from PySide2.QtWidgets import QApplication, QWidget, QPushButton, QProgressBar, QVBoxLayout
2 from PySide2.QtCore import QThread, Signal, Qt
3 import time
4
5 class myThread(QThread):
6 change_value = Signal(int)
7
8 def run(self):
9 ct = 0
10 while ct < 100:
11 ct += 1
12 time.sleep(0.3)
13 self.change_value.emit(ct)
14
15
16 class MyWidget(QWidget):
17 def __init__(self):
18 super(MyWidget, self).__init__()
19 self.setGeometry( 500, 500, 650, 450)
20 self.setWindowTitle("My Progress bar")
21 self.initUI()
22 self.show()
23
24 def initUI(self):
25 # Create ProgressBar
26 self.pgb = QProgressBar()
27 self.pgb.setStyleSheet("QProgressBar {border: 2px solid grey; border-radius: 8px; padding:1px}"
28 "QProgressBar::chunk {background:green}")
29 #self.pgb.setOrientation(Qt.Vertical) # set vertical progress bar
30 #self.pgb.setTextVisible(False) # hide text
31
32 self.startButn = QPushButton("Start")
33 self.startButn.setStyleSheet("">self.startButn.clicked.connect(self.startProgressBar)
34
35 vbox = QVBoxLayout()
36 vbox.addWidget(self.pgb)
37 vbox.addWidget(self.startButn)
38 self.setLayout(vbox)
39
40 def startProgressBar(self):
41 self.thread = myThread()
42 self.thread.change_value.connect(self.setProgressVal)
43 self.thread.start()
44
45 def setProgressVal(self, val):
46 self.pgb.setValue(val)
47
48
49
50 if __name__ == "__main__":
51 app = QApplication([])
52 widget = MyWidget()
53
54
55 app.exit(app.exec_())