Progressbar --------------- This program creates a PyQt5 widget displaying two progress bars. Each progress bar operates on a separate thread, one updating every 0.1 seconds, and the other every 0.2 seconds. .. code-block:: python :caption: ### scripts/PYQT5/03_thread/04_progressbar/main.py # -*- coding: utf-8 -*- import sys import time from PyQt5.QtWidgets import QApplication, QProgressBar, QVBoxLayout, QWidget from PyQt5.QtCore import QThread, pyqtSignal class Worker(QThread): progress = pyqtSignal(int) # 작업 진행 상황을 나타내는 신호 def __init__(self, sleep_time=0.1): super(Worker, self).__init__() self.sleep_time = sleep_time def run(self): for i in range(101): time.sleep(self.sleep_time) self.progress.emit(i) class MultiProgressBarWidget(QWidget): def __init__(self): super(MultiProgressBarWidget, self).__init__() self.initUI() def initUI(self): layout = QVBoxLayout() self.progressBar1 = QProgressBar(self) self.progressBar2 = QProgressBar(self) layout.addWidget(self.progressBar1) layout.addWidget(self.progressBar2) self.setLayout(layout) self.worker1 = Worker(0.1) # 0.1초 간격 self.worker2 = Worker(0.2) # 0.5초 간격 self.worker1.progress.connect(self.progressBar1.setValue) self.worker2.progress.connect(self.progressBar2.setValue) self.worker1.start() self.worker2.start() if __name__ == "__main__": app = QApplication(sys.argv) window = MultiProgressBarWidget() window.show() sys.exit(app.exec_()) - ``Worker`` Class: This class inherits from ``QThread`` and defines code to be executed in a new thread. The ``run`` method updates progress from 0% to 100%. The update interval is determined by ``sleep_time``, passed in the constructor. - ``progress`` Signal: Within the ``Worker`` class, as progress updates, this signal is emitted to update the UI. - ``MultiProgressBarWidget`` Class: The main widget containing the two progress bars. Two ``Worker`` instances are created, linked to each progress bar, and the threads are started.