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

파이썬 Python 2024
반응형

윈도우에는 화면 하단에 수평으로 빈 공간을 삽입할 수 있습니다. 그것을 상태바(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
,

녹두장군1님의
글이 좋았다면 응원을 보내주세요!