QProgressBar
Constructor (생성자)
QProgressBar(parent=None)
QProgressBar
widget의 인스턴스를 생성.parent
parameter는 부모 위젯을 지정 (생략 가능).- 선택적으로 minimum과 maximum을 argument로 할당해서 범위를 설정할 수 있음.
QProgressBar(parent, minimum, maximum)
Methods (메서드)
setValue(value)
progressBar.setValue(value)
QProgressBar
widget의 값을 설정.value
parameter는QProgressBar
widget의 현재 진행률 값.
setMinimum(minimum)
progressBar.setMinimum(minimum)
QProgressBar
widget의 최소값을 설정.minimum
매개변수는QProgressBar
widget의 최소값.
setMaximum(maximum)
progressBar.setMaximum(maximum)
QProgressBar
widget의 최대값을 설정합니다.maximum
매개변수는QProgressBar
widget의 최대값.
reset()
progressBar.reset()
QProgressBar
widget의 값을 초기 상태로 재설정.- 진행률 바의 값을 minimum으로 설정(명시적으로 설정하지 않은 경우 0).
Example
이 코드는 PySide6를 사용하여 QProgressBar
를 포함하고 있는 PyQt Application을 생성하는 예제.
import sys
from PySide6.QtWidgets import (
QApplication,
QMainWindow,
QProgressBar,
QPushButton,
QWidget, QVBoxLayout,
)
from PySide6.QtCore import QTimer
class MW(QMainWindow):
def __init__(self):
super(MW, self).__init__()
self.setWindowTitle("ex: QProgressBar")
self.setGeometry(200, 200, 300, 150)
self.progressBar = QProgressBar(minimum=0, maximum=10)
self.progressValue = self.progressBar.minimum()
# self.progressBar.setGeometry(50, 50, 200, 30) # absolute positioning
self.startButton = QPushButton("start")
self.startButton.clicked.connect(self.startProgress)
# self.startButton.setGeometry(100, 100, 100, 30) # absolute positioning
self.timer = QTimer()
self.timer.timeout.connect(self.updateProgress)
lm = QVBoxLayout()
lm.addWidget(self.progressBar)
lm.addWidget(self.startButton)
tmp = QWidget()
tmp.setLayout(lm)
self.setCentralWidget(tmp)
self.show()
def startProgress(self):
self.progressBar.reset()
self.progressValue = self.progressBar.value()
self.startButton.setEnabled(False)
# self.progressBar.setValue(self.progressValue)
self.timer.start(100) # 100 milliseconds마다 타이머 발생
def updateProgress(self):
self.progressValue += 1
self.progressBar.setValue(self.progressValue)
if self.progressValue >= self.progressBar.maximum():
self.timer.stop()
# self.progressBar.reset()
self.startButton.setEnabled(True)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MW()
sys.exit(app.exec())
- 기본 설정:
MW
클래스는 QMainWindow를 상속하며, PySide6 애플리케이션의 main window에 해당.- 창의 제목과 크기를 설정합니다.
- 프로그레스 바 및 버튼 생성:
self.progressBar
변수에QProgressBar
위젯 객체를 할당: 최소값은 0으로, 최대값은 10으로 설정.self.progressValue
변수를 사용하여self.progressBar
객체의 현재 값(진행률)을 추적.self.startButton
변수에QPushButton
위젯 객체를 할당: 버튼에는 "start" 텍스트가 표시.QVBoxLayout
객체를 통해 프로그레스 바와 버튼을 수직으로 배치.
- 시작 버튼 클릭 시 작업:
startProgress
메서드는 "start" 버튼이 클릭시 호출 (즉, slot임).- 프로그레스 바를 초기 상태로 재설정하고, 현재 값(진행률)을 초기값으로 설정.
- "start" 버튼을 비활성화합니다.
QTimer
객체를 시작하여 일정 시간 간격으로 프로그레스 바를 업데이트하기 위한 signal발생.
- 프로그레스 바 업데이트:
updateProgress
메서드는QTimer
객체의timeout
signal이 발생할 때마다 호출.- 현재 값(진행률)을 증가시키고, 프로그레스 바의 값을 해당 값으로 설정.
- 만약 현재 값이 최대값에 도달하면, QTimer를 중지하고 프로그레스 바를 초기 상태로 재설정한 후 "start" 버튼을 다시 활성화합니다.
- 애플리케이션 실행:
__main__
블록에서 QApplication을 생성하고 MW 클래스의 인스턴스를 생성하여 애플리케이션을 실행.
더 읽어보면 좋은 자료들.
'Python > PySide PyQt' 카테고리의 다른 글
[PySide6] pyside6-uic 사용하기 (0) | 2024.05.07 |
---|---|
[PySide6] Qt Designer6 (0) | 2024.05.06 |
[PySide6] QUiLoader 를 Qt Designer의 .ui 사용하기. (0) | 2024.05.06 |
[PySide6] matplotlib 이용하기: FigureCanvasQTAgg, NavigationToolbar2QT (0) | 2024.04.29 |
[PySide6] 2024년 참고할 만한 책들. (0) | 2024.03.04 |