Files
fluent_widgets_pyside6/qfluentwidgets/components/dialog_box/message_dialog.py

66 lines
2.3 KiB
Python
Raw Normal View History

2025-08-14 18:45:16 +08:00
# coding:utf-8
from PySide6.QtCore import Signal
from PySide6.QtWidgets import QLabel, QPushButton, QDialog
from ...common.auto_wrap import TextWrap
from ...common.style_sheet import FluentStyleSheet
from .mask_dialog_base import MaskDialogBase
class MessageDialog(MaskDialogBase):
""" Win10 style message dialog box with a mask """
yesSignal = Signal()
cancelSignal = Signal()
def __init__(self, title: str, content: str, parent):
super().__init__(parent=parent)
self.content = content
self.titleLabel = QLabel(title, self.widget)
self.contentLabel = QLabel(content, self.widget)
self.yesButton = QPushButton(self.tr('OK'), self.widget)
self.cancelButton = QPushButton(self.tr('Cancel'), self.widget)
self.__initWidget()
def __initWidget(self):
""" initialize widgets """
self.windowMask.resize(self.size())
self.widget.setMaximumWidth(540)
self.titleLabel.move(24, 24)
self.contentLabel.move(24, 56)
self.contentLabel.setText(TextWrap.wrap(self.content, 71)[0])
self.__setQss()
self.__initLayout()
# connect signal to slot
self.yesButton.clicked.connect(self.__onYesButtonClicked)
self.cancelButton.clicked.connect(self.__onCancelButtonClicked)
def __initLayout(self):
""" initialize layout """
self.contentLabel.adjustSize()
self.widget.setFixedSize(48+self.contentLabel.width(),
self.contentLabel.y() + self.contentLabel.height()+92)
self.yesButton.resize((self.widget.width() - 54) // 2, 32)
self.cancelButton.resize(self.yesButton.width(), 32)
self.yesButton.move(24, self.widget.height()-56)
self.cancelButton.move(
self.widget.width()-24-self.cancelButton.width(), self.widget.height()-56)
def __onCancelButtonClicked(self):
self.cancelSignal.emit()
self.reject()
def __onYesButtonClicked(self):
self.setEnabled(False)
self.yesSignal.emit()
self.accept()
def __setQss(self):
""" set style sheet """
self.windowMask.setObjectName('windowMask')
self.titleLabel.setObjectName('titleLabel')
self.contentLabel.setObjectName('contentLabel')
FluentStyleSheet.MESSAGE_DIALOG.apply(self)