프로그레스 바(QProgressBar)를 제어하는 간단한 PyQt5 예제Qt/PyQt5 강좌2024. 8. 31. 06:01
Table of Contents
반응형
프로그레스 바(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_()) |
반응형
'Qt > PyQt5 강좌' 카테고리의 다른 글
PyQt5 라벨 사용 예제 - QLabel, QFont, StyleSheet (4) | 2024.09.02 |
---|---|
테이블(QTableWidget)에 콤보박스(QComboBox) 추가하기 (3) | 2024.09.01 |
PyQt5 그룹박스(QGroupBox) 예제 (0) | 2024.08.31 |
PyQt5에서 QTableWidget를 마우스로 클릭하여 선택되는 것 방지 (2) | 2024.08.29 |
탭 재생성 시 이전 선택 탭 복원하는 pyQt5 예제 (2) | 2024.08.23 |