Appia의 IT세상

파이썬[Python GUI, PyQt5 Tutorial 020] GUI 하단 상태바(Status Bar) 만들기 본문

Python/Python PyQt5 (GUI)

파이썬[Python GUI, PyQt5 Tutorial 020] GUI 하단 상태바(Status Bar) 만들기

Appia 2020. 7. 8. 07:11
반응형

파이썬[Python GUI, PyQt5 Tutorial 020)] 

GUI 하단 상태바(Status Bar) 만들기 

 

종종 많은 프로그램을 보다보면 윈도우 창 하단에 어떤 동작을 하는지에 대해서 표시 해주는 경우가 많습니다. 만약 데이터를 로딩 하는 중이면, 로딩 중이거나, 아니면 데이터를 쓰고 있다면 데이터를 쓰고 있는 다는 등에 현재 프로그램 상태에 대해서 명시를 해줄 수 있게 상태바를 구성 할 수 있습니다. 그럼 한번 다음과 같이 살펴보겠습니다. 

윈도우 화면 구성 

윈도우를 보면 다음과 같이 상단에는 메뉴바가 있고, 하단에는 상태바(Status Bar)가 존재합니다. 그럼 상태 방에 대해서 한번 구성해보고 작성해보도록 하겠습니다. 

 

import sys
 
from PyQt5.QtWidgets import QApplication, QMainWindow
 
class QtGUI(QMainWindow):
 
    def __init__(self):
 
        super().__init__()
 
        self.statusBar().showMessage('준비중')
 
        self.setWindowTitle('Appia')
 
        self.resize(300300)
 
        self.show()
 
 
if __name__ == '__main__':
 
    app = QApplication(sys.argv)
 
    ex = QtGUI()
 
    app.exec_()
cs

 

위의 코드를 한번 실행해보면 다음과 같은 결과가 나옵니다. 

그럼 몇가지 부분을 추가하여 1~ 10000번까지 계속 개수를 세우는 동안에는 Status bar에 상태값이 변경되도록 하겠습니다. 

import sys
 
from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit, QPushButton, QLabel
 
 
class QtGUI(QMainWindow):
 
    def __init__(self):
 
        super().__init__()
 
        self.sb = self.statusBar()
 
        self.setStatusBar(self.sb)
 
        self.sb.showMessage('준비중')
 
        self.setWindowTitle('Appia')
 
        self.label = QLabel("00000000000",self)
 
        self.label.move(20,20)
 
        self.pb = QPushButton("Start", self)
 
        self.pb.clicked.connect(self.count_number)
 
        self.pb.move(7020)
 
        self.resize(300300)
 
        self.show()
 
 
    def count_number(self):
 
        self.sb.showMessage("작업중")
 
        for i in range(1,1000000):
 
            print(i)
 
            self.label.setText(str(i))
 
 
        self.sb.showMessage("준비중")
 
 
if __name__ == '__main__':
 
    app = QApplication(sys.argv)
 
    ex = QtGUI()
 
    app.exec_()
cs

 

일단 위의 코드를 실행하면 다음과 GUI가 나타납니다. 

하지만, 몇가지 문제가 있습니다. 정상적으로 동작중에는 Status Bar와 QLabel이 업데이트가 되지 않습니다. 그럼 각각 라벨과 Status Bar가 업데이트 되는 지점에서 repaint() 부분을 실행해주도록 하겠습니다. 

    def count_number(self):
 
        self.sb.showMessage("작업중")
 
        self.sb.repaint()
 
        for i in range(1,1000000):
 
            print(i)
 
            self.label.setText(str(i))
 
            self.label.repaint()
 
        self.sb.showMessage("준비중")
cs

각 StatusBar을 repaint()부분을 실행하도록 하여 매번 데이터가 업데잍트 되게 해줍니다. 종종 많은 분들은 PyQt5를 쓰면서 데이터가 계속 업데이트 되지 않을 때 반드시 repaint() 부분을 실행해주도록 합니다. 

 

QT_Tutorial_020.py
0.00MB

 

오늘은 파이썬[Python GUI, PyQt5 Tutorial 020)] GUI 하단 상태바(Status Bar) 만들기 주제로 상태바(Status Bar)을 생성하고 이 부분을 바로바로 업데이트 되게 하는 방법에 대해서 살펴봤습니다. 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

반응형
Comments