PyQt6는 다양한 GUI 요소를 제공하며, 메세지박스(QMessageBox)는 그 중 하나입니다. 메세지박스는 알림 또는 입력 상자와 같은 팝업 창을 말합니다. 파이썬 QMessageBox 외 다이얼로그, 파일창 예제까지 같이 알아보겠습니다.
1. 파이썬 QMessageBox 만들기
PyQt6를 통해 메세지박스 만드는 방법은 간단합니다. 먼저, 파이썬 QMessageBox모듈을 가져와야합니다. 그런 다음 QMessageBox 클래스의 객체를 만들고 exec_() 메서드를 호출하여 대화 상자를 실행합니다. 아래는 메시지 대화 상자를 만드는 예시입니다.
1 2 3 4 5 6 7 8 9 10 11 | from PyQt6.QtWidgets import QApplication, QMessageBox app = QApplication([]) msg_box = QMessageBox() msg_box.setIcon(QMessageBox.Icon.Information) msg_box.setText(“This is the message text.”) msg_box.setWindowTitle(“Dialog Box Title”) msg_box.exec() | cs |
QMessageBox 클래스의 객체를 만들고, setIcon() 메서드를 사용하여 아이콘을 설정하고, setText() 메서드를 사용하여 메시지 텍스트를 설정하였습니다. setWindowTitle() 메서드를 사용하여 대화 상자의 제목을 설정하였습니다. 마지막으로, exec_() 메서드를 호출하여 대화 상자를 실행합니다.
2. 파이썬 입력 메세지 팝업 만들기 – QInputDialog
PyQt6를 사용하여 입력 대화 상자를 만드는 것도 간단합니다. QApplication, QInputDialog 사용으로 입력 대화 상자를 만들 수 있습니다. 아래는 간단한 입력 메세지 팝업을 만드는 예시입니다.
1 2 3 4 5 6 7 8 9 10 11 | from PyQt6.QtWidgets import QApplication, QInputDialog app = QApplication([]) text, ok = QInputDialog.getText(None, “Input Dialog”, “Enter your name:”) if ok: print(f“Entered text: {text}”) else: print(“Dialog canceled or closed.”) | cs |
이 코드에서는 PyQt6 라이브러리에서 필요한 모듈 QApplication 및 QInputDialog를 가져옵니다. 애플리케이션을 초기화하기 위해 QApplication 인스턴스를 생성합니다.
다음으로 QInputDialog.getText() 메서드를 사용하여 입력 대화 상자를 만듭니다. 첫 번째 인수는 ‘None’으로, 대화 상자가 모달 대화 상자로 표시됩니다. 두 번째 인수는 이 예에서 대화 상자의 제목인 “입력 대화 상자”입니다. 세 번째 인수는 대화 상자에 표시할 메시지입니다.
getText() 메서드는 입력된 텍스트를 문자열로 반환하고 사용자가 확인을 클릭했는지 대화 상자를 취소했는지 나타내는 부울 값을 반환합니다. 이 값을 각각 text 및 ok 변수에 할당합니다.
그런 다음 ok 값을 확인하여 사용자가 확인을 클릭했는지 확인합니다. ok가 True이면 입력된 텍스트를 처리하고 이 경우에는 출력합니다. ‘ok’가 ‘False’이면 사용자가 취소를 클릭했거나 대화 상자를 닫았음을 의미하며 해당 메시지를 인쇄합니다.
3. PyQt6 파일 선택 창 만들기 – QFileDialog
QFileDialog 모듈을 사용하면 파일 선택 창을 만들 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from PyQt6.QtWidgets import QApplication, QFileDialog app = QApplication([]) file_dialog = QFileDialog() file_dialog.setNameFilter(“Text files (*.txt);;All files (*.*)”) if file_dialog.exec() == QFileDialog.DialogCode.Accepted: selected_files = file_dialog.selectedFiles() print(“Selected file(s):”, selected_files) else: print(“Dialog canceled or closed.”) app.exec() | cs |
- PyQt6 라이브러리에서 필요한 모듈 QApplication 및 QFileDialog를 가져옵니다. 애플리케이션을 초기화하기 위해 QApplication 인스턴스를 생성합니다.
- 다음으로 file_dialog라는 QFileDialog 개체를 만듭니다.
- setNameFilter() 메서드를 사용하여 파일 필터를 설정합니다. 이 예에서는 확장자가 “.txt”인 텍스트 파일 또는 모든 파일을 선택할 수 있도록 “텍스트 파일(.txt);;모든 파일(.*)”로 설정합니다.
- 대화 상자를 호출하기 위해 file_dialog의 exec() 메서드를 사용합니다. 사용자가 파일을 선택하고 “열기” 버튼을 클릭하면 file_dialog.exec()가 QFileDialog.DialogCode.Accepted를 반환하고 selectedFiles() 메서드를 사용하여 선택한 파일을 검색할 수 있습니다. 사용자가 대화 상자를 취소하거나 닫으면 file_dialog.exec()는 QFileDialog.DialogCode.Rejected를 반환하고 해당 메시지를 인쇄합니다.
- 마지막으로 app.exec()를 사용하여 애플리케이션 이벤트 루프를 실행하여 애플리케이션을 시작하고 이벤트 루프가 종료될 때까지 계속 실행합니다.
4. 다이얼로그 사용 예제 – 이름, 나이 작성 input
PyQt6 라이브러리를 사용하여 레이아웃, 입력 상자, 레이블 및 확인 버튼이 있는 QDialog 상자를 만드는 예입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | from PyQt6.QtWidgets import QApplication, QDialog, QVBoxLayout, QLabel, QLineEdit, QPushButton app = QApplication([]) dialog = QDialog() layout = QVBoxLayout(dialog) label1 = QLabel(“Name:”) line_edit1 = QLineEdit() layout.addWidget(label1) layout.addWidget(line_edit1) label2 = QLabel(“Age:”) line_edit2 = QLineEdit() layout.addWidget(label2) layout.addWidget(line_edit2) button_ok = QPushButton(“OK”) button_ok.clicked.connect(dialog.accept) layout.addWidget(button_ok) if dialog.exec() == QDialog.DialogCode.Accepted: name = line_edit1.text() age = line_edit2.text() print(“Name:”, name) print(“Age:”, age) else: print(“Dialog canceled or closed.”) app.exec() | cs |
- PyQt6 라이브러리에서 필요한 모듈 QApplication, QDialog, QVBoxLayout, QLabel, QLineEdit 및 QPushButton을 가져옵니다. 애플리케이션을 초기화하기 위해 QApplication 인스턴스를 생성합니다.
- 다음으로 dialog라는 QDialog 인스턴스를 만듭니다.
- 대화 상자의 레이아웃을 설정하기 위해 layout이라는 QVBoxLayout 인스턴스를 생성합니다.
- QLabel 및 QLineEdit 클래스를 사용하여 레이블과 입력 상자를 만듭니다. 이 예에서는 두 개의 레이블(“이름:” 및 “연령:”)과 각각의 입력 상자를 만듭니다.
- addWidget() 메서드를 사용하여 레이아웃에 레이블과 입력 상자를 추가합니다.
- QPushButton 클래스를 사용하여 OK 버튼을 생성하고 해당 텍스트를 “OK”로 설정합니다. clicked.connect() 메서드를 사용하여 dialog의 accept() 메서드를 버튼의 클릭 이벤트에 연결합니다.
- 레이아웃에 확인 버튼을 추가합니다.
- 대화 상자를 호출하기 위해 dialog의 exec() 메서드를 사용합니다. 사용자가 확인 버튼을 클릭하면 dialog.exec()는 QDialog.DialogCode.Accepted를 반환하고 text() 메서드를 사용하여 입력 상자에서 입력된 값을 검색할 수 있습니다. 사용자가 대화 상자를 취소하거나 닫으면 dialog.exec()는 QDialog.DialogCode.Rejected를 반환하고 해당 메시지를 인쇄합니다.
- 마지막으로 app.exec()를 사용하여 애플리케이션 이벤트 루프를 실행하여 애플리케이션을 시작하고 이벤트 루프가 종료될 때까지 계속 실행합니다.
5. 결론 및 의견
QMessageBox, QInputDialog, QFileDialog 모듈을 사용하여 간단하게 메시지, 입력, 파일 선택 대화 상자를 만들 수 있습니다. 또한, QDialog 클래스를 사용하여 다이얼로그 대화 상자를 만들 수도 있습니다. 용도에 맞게 python gui 구성시 사용하시면 됩니다.
[관련글]