Appia의 IT세상

파이썬[Python GUI, PyQt5 Tutorial 022] 메시지박스(Messagebox)만들기 본문

Python/Python PyQt5 (GUI)

파이썬[Python GUI, PyQt5 Tutorial 022] 메시지박스(Messagebox)만들기

Appia 2020. 7. 26. 07:44
반응형

파이썬[Python GUI, PyQt5 Tutorial 022] 메시지박스(Messagebox)만들기

 

이번 포스팅은 흔히들 보는 메시지박스(Messagebox)를 만들어 볼까 합니다. 메시지박스(Messagebox)는 여러 버튼 중에 선택을 하는 경우에 많이 사용이 됩니다. 때론, 경고창들을 나타내기도 합니다. 다음그림과 같은 부분이라고 생각하시면 이해가 쉬울 것이라고 생각합니다. 

 

메시지박스(Messagebox)

간단한 코드를 살펴보면서 추가로 설명을 하도록 하겠습니다. 

 

import sys
 
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox
 
 
class App(QWidget):
 
    def __init__(self):
 
        super().__init__()
 
        buttonReply = QMessageBox.question(
 
            self, 'APPIA'"Message Box",
 
            QMessageBox.Yes | QMessageBox.Save | QMessageBox.Cancel | QMessageBox.Reset | QMessageBox.No,
 
            QMessageBox.No
 
        )
 
        if buttonReply == QMessageBox.Yes:
 
            print('Yes clicked.')
 
        elif buttonReply == QMessageBox.Save:
 
            print('Save clicked.')
 
        elif buttonReply == QMessageBox.Cancel:
 
            print('Cancel clicked.')
 
        elif buttonReply == QMessageBox.Close:
 
            print('Close clicked.')
 
        elif buttonReply == QMessageBox.Reset:
 
            print('Reply clicked.')
 
        else:
 
            print('No clicked.')
 
        self.show()
 
 
if __name__ == '__main__':
 
    app = QApplication(sys.argv)
 
    ex = App()
 
    sys.exit(app.exec_())
cs

간단히 메시지박스(Messagebox)을 나타내는 코드입니다. 여기에서 추가로 각 코드 부분에 대해서 설명을 하도록 하겠습니다. 

 

메시지 박스를 생성하는 부분입니다. 

        buttonReply = QMessageBox.question(
 
            self, 'APPIA'"Message Box",
 
            QMessageBox.Yes | QMessageBox.Save | QMessageBox.Cancel | QMessageBox.Reset | QMessageBox.No,
 
            QMessageBox.No
 
        )
cs

여기에서 QMessageBox이후에 나타날 수 있는 부분은 다음과 같습니다. 

아이콘 항목 
question
warning
information
criticial

위의 코드에 question대신 입력할 경우 아이콘이 변경이 됩니다. 그리고, 구성을 보면 다음과 같습니다. 

QMessageBox.critical(Parent, Title, MessagboxText, buttons, defaultButton)

여기에서 buttons들은 여러개가 올수 있습니다. 이 때 미리 정의 되어 있는 버튼에 대해서만 사용이 가능합니다. 

Ok Open Save Cancel
Close Discard Apply Reset
RestorDefault Yes No Abort
Retry Ignore    

여러개가 입력될 경우 다음과 같이 '|'를 이용하시면 됩니다. 

 

다음 코드들은 위의 메시지 박스(MessageBox)의 버튼이 선택되었을 경우 최초 메시지 박스로 생성된 클래스의 리턴된 값으로 동작을 지정을 할 수 가 있음을 나타냅니다. 

        if buttonReply == QMessageBox.Yes:
 
            print('Yes clicked.')
 
        elif buttonReply == QMessageBox.Save:
 
            print('Save clicked.')
 
        elif buttonReply == QMessageBox.Cancel:
 
            print('Cancel clicked.')
 
        elif buttonReply == QMessageBox.Close:
 
            print('Close clicked.')
 
        elif buttonReply == QMessageBox.Reset:
 
            print('Reply clicked.')
 
        else:
 
            print('No clicked.')
cs

물론, 이와 같은 메시지 박스(MessageBox)자체를 특정이벤트에 연결해서 사용하기 때문에 메인 코드에 다음과 같이 메인 코드에 사용하는 경우는 매우 드물지만, 이것은 이해를 돕기위한 예제임으로 이해를 바랍니다. 

 

이번 포스팅은 파이썬[Python GUI, PyQt5 Tutorial 022] 메시지박스(Messagebox)만들기라는 주제로 간단히 메시지를 박스를 만들고 관련된 이야기를 해봤습니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다. 

반응형
Comments