🌲

002 QMessageBox(메세지 다이얼로그)

1. 코드

from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QMessageBox from PyQt5.QtCore import QCoreApplication import sys class 메세지다이얼로그(QWidget): def __init__(self): super().__init__() self.UI초기화() def UI초기화(self): btn = QPushButton('프로그램 종료',self) btn.clicked.connect(self.close) btn.move(20, 50) btn2 = QPushButton("에러 발생",self) btn2.move(130,50) btn2.clicked.connect(self.critical) btn3 = QPushButton("경고 발생",self) btn3.move(240,50) btn3.clicked.connect(self.warning) self.setWindowTitle('QMessageBox') self.setGeometry(300, 300, 350, 200) self.show() def close(self): question = QMessageBox.question(self, '질문 메세지 창',\ '정말 종료하시겠습니까?',\ QMessageBox.Yes | QMessageBox.No , QMessageBox.No) if question == QMessageBox.Yes: super().close() def critical(self): cri = QMessageBox.critical(self, '에러 창',\ '심각한 에러가 생겼습니다.',\ QMessageBox.Help| QMessageBox.Reset | QMessageBox.Apply) def warning(self): warn = QMessageBox.warning(self, "경고 창",\ '에러가 날 수 있는 문제가 생겼습니다.', QMessageBox.Ok|QMessageBox.Retry|QMessageBox.Ignore) 프로그램무한반복 = QApplication(sys.argv) 실행인스턴스 = 메세지다이얼로그() 프로그램무한반복.exec_()

2. 상세 내용

QMessageBox는 질문창 또는 사용자에게 정보를 주거나 받을 수 있는 창을 만들 수 있습니다.
btn.clicked.connect(self.close)
 
close() 함수(슬롯)은 이미 정의 되어있기 때문에 재정의 합니다.
 
def close(self): question = QMessageBox.question(self, '질문 메세지 창', '정말 종료하시겠습니까?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if question == QMessageBox.Yes: super().close()
  • QMessageBox.question(부모위젯,창 이름,나타날 메세지,[추가할 버튼] ,옵션:기본으로 선택된 버튼)
 
여러개의 버튼을 추가할 때에는 각 버튼을 추가하는 명령어 사이에 | 넣어야합니다. 파이프라고 부르며 엔터 위에 있습니다. Shift를 누르고 해당 버튼을 누르시면 됩니다. 아래는 옵션 값입니다.
 
 
만약 Yes 버튼이 눌렀다면 프로그램을 종료합니다.
 
def critical(self): cri = QMessageBox.critical(self, '에러 창', '심각한 에러가 생겼습니다.', QMessageBox.Help | QMessageBox.Reset | QMessageBox.Apply) def warning(self): warn = QMessageBox.warning(self, "경고 창", '에러가 날 수 있는 문제가 생겼습니다.', QMessageBox.Ok | QMessageBox.Retry | QMessageBox.Ignore)
 
각 버튼에 대응하여 동작하는 메세지 박스를 생성합니다.

3. 실행 화면

 
notion imagenotion image
 
notion imagenotion image
notion imagenotion image
 
notion imagenotion image