Qt/PyQt5 강좌
프로그레스 바(QProgressBar)를 제어하는 간단한 PyQt5 예제
webnautes
2024. 8. 31. 06:01
반응형
프로그레스 바(QProgressBar)를 제어하는 간단한 PyQt5 예제입니다.
2024. 8. 31 최초작성
시작 버튼을 클릭하면 프로그레스 바가 진행되면서 파란색 영역이 채워지다가 정지 버튼을 클릭하면 멈춥니다.
초기화 버튼을 클릭하면 프로그레스 바가 초기화됩니다.
100% 채우기 버튼을 클릭하면 프로그레스 바가 꽉차게 됩니다.
전체 코드입니다.
import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QProgressBar, QVBoxLayout from PyQt5.QtCore import QTimer, QObject, pyqtSignal class ProgressBarController(QObject): progress_complete = pyqtSignal() def __init__(self, progress_bar): super().__init__() self.progress_bar = progress_bar self.timer = QTimer(self) self.timer.timeout.connect(self.update_progress) def start(self): if not self.timer.isActive(): self.timer.start(100) def stop(self): self.timer.stop() def reset(self): self.stop() self.progress_bar.setValue(0) def fill(self): self.progress_bar.setValue(100) self.stop() self.progress_complete.emit() def update_progress(self): current_value = self.progress_bar.value() if current_value < 100: self.progress_bar.setValue(current_value + 1) else: self.stop() self.progress_complete.emit() class ProgressBarApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('프로그레스 바 예제') self.setGeometry(300, 300, 300, 200) layout = QVBoxLayout() self.progress_bar = QProgressBar(self) self.progress_bar.setMaximum(100) layout.addWidget(self.progress_bar) self.controller = ProgressBarController(self.progress_bar) self.start_button = QPushButton('시작', self) self.start_button.clicked.connect(self.controller.start) layout.addWidget(self.start_button) self.stop_button = QPushButton('정지', self) self.stop_button.clicked.connect(self.controller.stop) layout.addWidget(self.stop_button) self.reset_button = QPushButton('초기화', self) self.reset_button.clicked.connect(self.controller.reset) layout.addWidget(self.reset_button) self.fill_button = QPushButton('100% 채우기', self) self.fill_button.clicked.connect(self.controller.fill) layout.addWidget(self.fill_button) self.setLayout(layout) if __name__ == '__main__': app = QApplication(sys.argv) ex = ProgressBarApp() ex.show() sys.exit(app.exec_()) |
반응형