Working for you

it, 인터넷, 컴퓨터, 프로그램 정보 공유

파이썬 QMessageBox

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

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
파이썬 QInputDialog

이 코드에서는 PyQt6 라이브러리에서 필요한 모듈 QApplication 및 QInputDialog를 가져옵니다. 애플리케이션을 초기화하기 위해 QApplication 인스턴스를 생성합니다.

파이썬 QInputDialog 1

다음으로 QInputDialog.getText() 메서드를 사용하여 입력 대화 상자를 만듭니다. 첫 번째 인수는 ‘None’으로, 대화 상자가 모달 대화 상자로 표시됩니다. 두 번째 인수는 이 예에서 대화 상자의 제목인 “입력 대화 상자”입니다. 세 번째 인수는 대화 상자에 표시할 메시지입니다.

파이썬 QInputDialog 2

getText() 메서드는 입력된 텍스트를 문자열로 반환하고 사용자가 확인을 클릭했는지 대화 상자를 취소했는지 나타내는 부울 값을 반환합니다. 이 값을 각각 text 및 ok 변수에 할당합니다.

파이썬 QInputDialog 3

그런 다음 ok 값을 확인하여 사용자가 확인을 클릭했는지 확인합니다. ok가 True이면 입력된 텍스트를 처리하고 이 경우에는 출력합니다. ‘ok’가 ‘False’이면 사용자가 취소를 클릭했거나 대화 상자를 닫았음을 의미하며 해당 메시지를 인쇄합니다.

파이썬 QInputDialog 4

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 개체를 만듭니다.
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
QApplication
  • 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 구성시 사용하시면 됩니다.

[관련글]

PyQt6 QT Designer 사용자 지정 위젯

파이썬 PyQt6 레이아웃 배치

PyQt6 위젯 정리

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다