728x90
반응형
SMALL
QMessageBox : 간단한 메시지 대화 상자
대화 상자를 수락하거나 취소할 수 있는 버튼이 있는 메시지는 간단한 패턴을 따르지 않는다. 이러한 대화 상자를 직접 구성할 수 있지만 Qt는 QMessageBox라는 내장 메시지 대화 상자 클래스도 제공한다. 이것은 정보, 경고 또는 질문 대화 상자를 만드는 데 사용할 수 있다.
import sys
from PySide6.QtWidgets import QApplication, QDialog, QMainWindow, QMessageBox, QPushButton
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("My App")
button = QPushButton("Press me for a dialog!")
button.clicked.connect(self.button_clicked)
self.setCentralWidget(button)
def button_clicked(self, s):
dlg = QMessageBox(self)
dlg.setWindowTitle("I have a question!")
dlg.setText("This is a simple dialog")
button = dlg.exec_()
if button == QMessageBox.Ok:
print("OK!")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
대화 상자 단추 상자와 마찬가지로 QMessageBox에 표시된 버튼도 (이진 OR 연산자) |와 결합하여 여러 단추를 표시할 수 있는 상수 집합으로 구성된다. 사용 가능한 버튼 유형의 전체 목록은 아래에 나와 있다.
|
다음 중 하나로 아이콘을 설정하여 대화 상자에 표시된 아이콘을 조정할 수도 있다.
예를 들어, 예 및 아니오 버튼이 있는 질문 대화 상자를 만든다.
def button_clicked(self, s):
dlg = QMessageBox(self)
dlg.setWindowTitle("I have a question!")
dlg.setText("This is a question dialog")
dlg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
dlg.setIcon(QMessageBox.Question)
button = dlg.exec_()
if button == QMessageBox.Yes:
print("Yes!")
else:
print("No!")
기본 QMessageBox 대화 상자
일을 더 간단하게 하기 위해 QMessageBox는 이러한 유형의 메시지 대화 상자를 구성하는 데 사용할 수 있는 여러 가지 방법이 있다. 이러한 방법은 다음과 같다.
QMessageBox.about(parent, title, message)
QMessageBox.critical(parent, title, message)
QMessageBox.information(parent, title, message)
QMessageBox.question(parent, title, message)
QMessageBox.warning(parent, title, message)
parent 매개변수는 대화 상자 child가 될 창입니다. 기본 창에서 대화 상자를 시작하는 경우 self를 쓴다.
def button_clicked(self, s):
button = QMessageBox.question(self, "Question dialog", "The longer message")
if button == QMessageBox.Yes:
print("Yes!")
else:
print("No!")
exec()을 호출하는 대신 이제 단순히 dialog 메서드를 호출하면 대화 상자가 생성된다. 각 메소드의 리턴값은 누른 버튼이다. 반환 값을 버튼 상수와 비교하여 눌린 것을 감지할 수 있다.
4개의 information, question 및 메서드는 대화 상자에 표시된 버튼을 조정하고 기본적으로 하나를 선택하는 데 사용할 수 있는 선택적 및 warning 인수도 허용한다.
def button_clicked(self, s):
button = QMessageBox.critical(
self,
"Oh dear!",
"Something went very wrong.",
buttons=QMessageBox.Discard | QMessageBox.NoToAll | QMessageBox.Ignore,
defaultButton=QMessageBox.Discard,
)
if button == QMessageBox.Discard:
print("Discard!")
elif button == QMessageBox.NoToAll:
print("No to all!")
else:
print("Ignore!")
728x90
반응형
LIST
'Python Library > PySide' 카테고리의 다른 글
[PySide] 대화 상자 (Dialogs) (1) (0) | 2022.06.27 |
---|---|
[PySide] 메뉴 (Menus) (0) | 2022.06.27 |
[PySide] 툴바 (Toolbars) (0) | 2022.06.27 |
[PySide] 레이아웃 (Layouts) (3) (0) | 2022.06.23 |
[PySide] 레이아웃 (Layouts) (2) (0) | 2022.06.23 |