본문 바로가기
프로그래밍/python

PyQt5 QProgressBar의 속성과 사용법

by 마루의 일상 2024. 5. 22.
728x90
반응형

QProgressBar는 PyQt5에서 제공하는 위젯 중 하나로, 작업의 진행 상태를 시각적으로 표현할 때 사용됩니다. 이 블로그 포스팅에서는 QProgressBar의 모든 속성과 사용법을 상세히 설명하겠습니다.

QProgressBar 기본 사용법

기본 설정

이제 기본적인 QProgressBar 사용 예제를 보겠습니다.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QProgressBar

class AppDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('QProgressBar Example')
        self.resize(300, 200)

        layout = QVBoxLayout()

        self.progressBar = QProgressBar(self)
        self.progressBar.setValue(50)  # 초기값 설정
        layout.addWidget(self.progressBar)

        self.setLayout(layout)

app = QApplication(sys.argv)
demo = AppDemo()
demo.show()
sys.exit(app.exec_())

위 코드는 기본적인 QProgressBar 위젯을 생성하고 값을 50으로 설정하는 예제입니다.

QProgressBar의 주요 속성

QProgressBar는 다양한 속성을 제공하여 진행 상태를 세밀하게 조절할 수 있습니다. 주요 속성을 하나씩 살펴보겠습니다.

최소값과 최대값 설정

setMinimum과 setMaximum 메서드를 사용하여 진행 상태의 최소값과 최대값을 설정할 수 있습니다.

self.progressBar.setMinimum(0)
self.progressBar.setMaximum(100)

현재 값 설정

setValue 메서드를 사용하여 현재 진행 상태를 설정할 수 있습니다.

self.progressBar.setValue(75)

텍스트 표시

진행 바에 텍스트를 표시하려면 setFormat 메서드를 사용합니다. %p%는 진행률을 퍼센트로 표시합니다.

self.progressBar.setFormat('%p% 완료')

방향 설정

진행 방향을 설정하려면 setOrientation 메서드를 사용합니다. Qt.Horizontal과 Qt.Vertical 값을 사용할 수 있습니다.

from PyQt5.QtCore import Qt
self.progressBar.setOrientation(Qt.Horizontal)  # 수평 진행 바

텍스트 숨기기

setTextVisible 메서드를 사용하여 진행 바에 표시되는 텍스트를 숨길 수 있습니다.

self.progressBar.setTextVisible(False)

고급 사용법

QProgressBar는 단순한 진행 표시 이상으로 다양한 활용이 가능합니다. 아래는 몇 가지 고급 사용법입니다.

타이머와 연동하기

QTimer를 사용하여 진행 상태를 자동으로 업데이트할 수 있습니다.

from PyQt5.QtCore import QTimer

class AppDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('QProgressBar Timer Example')
        self.resize(300, 200)

        layout = QVBoxLayout()

        self.progressBar = QProgressBar(self)
        self.progressBar.setMaximum(100)
        layout.addWidget(self.progressBar)

        self.timer = QTimer(self)
        self.timer.timeout.connect(self.handleTimer)
        self.timer.start(100)  # 100ms마다 handleTimer 호출

        self.setLayout(layout)

    def handleTimer(self):
        value = self.progressBar.value()
        if value < 100:
            value += 1
            self.progressBar.setValue(value)
        else:
            self.timer.stop()

app = QApplication(sys.argv)
demo = AppDemo()
demo.show()
sys.exit(app.exec_())

스타일 사용자 정의

CSS를 사용하여 QProgressBar의 스타일을 사용자 정의할 수 있습니다.

self.progressBar.setStyleSheet("""
QProgressBar {
    border: 2px solid grey;
    border-radius: 5px;
    text-align: center;
}

QProgressBar::chunk {
    background-color: #05B8CC;
    width: 20px;
    margin: 1px;
}
""")

 

이 포스팅에서는 PyQt5의 QProgressBar 위젯에 대해 자세히 살펴보았습니다. 기본 사용법부터 고급 활용법까지 다양한 예제를 통해 QProgressBar의 모든 속성을 설명했습니다.

728x90
반응형