Please Enable JavaScript!
Gon[ Enable JavaScript ]

파이썬(Python) PyQt5 QStatusBar 구현하기

파이썬 Python
반응형

윈도우에는 화면 하단에 수평으로 빈 공간을 삽입할 수 있습니다. 그것을 상태바(Status Bar) 라고 합니다. 보통 이곳에 윈도우의 상태를 실시간 텍스트로 표시해서 사용자에게 알리는 용도로 사용합니다.

 

 

QStatusBar 를 추가하는 방법은 두 가지입니다. 첫 번째는 QMainWindwo statusBar() 함수로  QStatusBar 객체를 생성하는 것입니다. 이 과정에서 윈도우에 추가합니다. 

def __init__(self):
    super().__init__()
    self.init_ui()

def init_ui(self):
    # 윈도우 설정
    self.setGeometry(300, 300, 400, 300)  # x, y, w, h
    self.setWindowTitle('Status Window')

    # Status 추가
    self.statusBar().showMessage('In progress')

 

 

두 번째는 생성자를 통해 QStatusBar 객체를 생성하고 QMainWindwo setStatusBar() 함수를 이용해서 윈도우 화면에 추가합니다. 이것은 클래스의 __init__ 함수에 들어가야 합니다. 텍스트 표시는 showMessage() 를 이용해서 변경합니다. 

def __init__(self):
    super().__init__()
    self.statusBar = QStatusBar()
    self.setStatusBar(self.statusBar)
    self.init_ui()

def init_ui(self):
    # 윈도우 설정
    self.setGeometry(300, 300, 400, 300)  # x, y, w, h
    self.setWindowTitle('Status Window')

    # Status 추가
    self.statusBar.showMessage('In Progress')

 


 

상태바에는 다른 위젯을 추가할 수 있는데, 버튼을 넣어 보았습니다. 위젯 추가함수는 QStatusBar addWidget() 입니다. 다시 삭제하고 싶다면 QStatusBar removeWidget() 을 사용합니다. 추가하고 삭제하는 과정에서 화면에 변화된 내용을 적용하기 위해서는 QStatusBar show() 함수를 써야 합니다. 

def __init__(self):
    super().__init__()
    ...

    # QButton 위젯 생성
    self.button = QPushButton('StatusBar Button');
    self.init_ui()

def init_ui(self):
    # 윈도우 설정
    ...

    # StatusBar QPushButton 추가
    self.statusBar.addWidget(self.button)

 

 

전체 소스는 다음과 같습니다. 

#!/usr/bin/env python3
import sys, datetime
from PyQt5.QtWidgets import QApplication, QStatusBar, QMainWindow, QPushButton

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.statusBar = QStatusBar()
        self.setStatusBar(self.statusBar)

        # QButton 위젯 생성
        self.button = QPushButton('StatusBar Button');
        self.init_ui()

    def init_ui(self):
        # 윈도우 설정
        self.setGeometry(300, 300, 400, 300)  # x, y, w, h
        self.setWindowTitle('Status Window')

        # Status 추가
        # self.statusBar.showMessage('In Progress')

        # StatusBar QButton 추가
        self.statusBar.addWidget(self.button)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

 

 

반응형
Posted by 녹두장군1
,