2026-07-13 22:06:39 +08:00
|
|
|
from PySide6.QtWidgets import QMessageBox, QMainWindow, QWidget, QDialog, QVBoxLayout, QLabel, QPlainTextEdit, \
|
|
|
|
|
QDialogButtonBox, QSizePolicy
|
|
|
|
|
|
2026-07-12 00:06:11 +08:00
|
|
|
|
|
|
|
|
def create_messagebox(parent: QWidget, title: str, message: str,
|
|
|
|
|
icon: QMessageBox.Icon = QMessageBox.Icon.Information,
|
|
|
|
|
button: QMessageBox.StandardButton = QMessageBox.StandardButton.Ok) -> QMessageBox:
|
|
|
|
|
msg = QMessageBox(parent)
|
|
|
|
|
msg.setWindowTitle(title)
|
|
|
|
|
msg.setText(message)
|
|
|
|
|
msg.setIcon(icon)
|
|
|
|
|
msg.setStandardButtons(button)
|
|
|
|
|
return msg
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def error(parent: QWidget, title: str, message: str,
|
|
|
|
|
button: QMessageBox.StandardButton = QMessageBox.StandardButton.Ok) -> None:
|
|
|
|
|
create_messagebox(
|
|
|
|
|
parent,
|
|
|
|
|
title=title,
|
|
|
|
|
message=message,
|
|
|
|
|
icon=QMessageBox.Icon.Critical,
|
|
|
|
|
button=button
|
|
|
|
|
).exec()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def info(parent: QWidget, title: str, message: str,
|
|
|
|
|
button: QMessageBox.StandardButton = QMessageBox.StandardButton.Ok) -> None:
|
|
|
|
|
create_messagebox(
|
|
|
|
|
parent,
|
|
|
|
|
title=title,
|
|
|
|
|
message=message,
|
|
|
|
|
icon=QMessageBox.Icon.Information,
|
|
|
|
|
button=button
|
|
|
|
|
).exec()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def warning(parent: QWidget, title: str, message: str,
|
|
|
|
|
button: QMessageBox.StandardButton = QMessageBox.StandardButton.Ok) -> None:
|
|
|
|
|
create_messagebox(
|
|
|
|
|
parent,
|
|
|
|
|
title=title,
|
|
|
|
|
message=message,
|
|
|
|
|
icon=QMessageBox.Icon.Warning,
|
|
|
|
|
button=button
|
|
|
|
|
).exec()
|
2026-07-13 22:06:39 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def ask_yes_no_with_plain_text(parent: QWidget, title: str, message: str, content: str):
|
|
|
|
|
dialog = QDialog(parent)
|
|
|
|
|
dialog.setWindowTitle(title)
|
|
|
|
|
dialog.resize(720, 420)
|
|
|
|
|
|
|
|
|
|
layout = QVBoxLayout(dialog)
|
|
|
|
|
|
|
|
|
|
label = QLabel(message)
|
|
|
|
|
label.setWordWrap(True)
|
|
|
|
|
label.setWordWrap(True)
|
|
|
|
|
|
|
|
|
|
details_box = QPlainTextEdit()
|
|
|
|
|
details_box.setReadOnly(True)
|
|
|
|
|
details_box.setPlainText(content)
|
|
|
|
|
details_box.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
|
|
|
|
|
|
|
|
|
buttons = QDialogButtonBox(
|
|
|
|
|
QDialogButtonBox.StandardButton.Yes |
|
|
|
|
|
QDialogButtonBox.StandardButton.No
|
|
|
|
|
)
|
|
|
|
|
buttons.button(QDialogButtonBox.StandardButton.Yes).clicked.connect(dialog.accept)
|
|
|
|
|
buttons.button(QDialogButtonBox.StandardButton.No).clicked.connect(dialog.reject)
|
|
|
|
|
|
|
|
|
|
layout.addWidget(label)
|
|
|
|
|
layout.addWidget(details_box, 1)
|
|
|
|
|
layout.addWidget(buttons)
|
|
|
|
|
|
|
|
|
|
return dialog.exec() == QDialog.DialogCode.Accepted
|